Как обмениваться данными между ExecutorService.execute() из другого класса с помощью ExecutorService во время работы в сJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как обмениваться данными между ExecutorService.execute() из другого класса с помощью ExecutorService во время работы в с

Сообщение Anonymous »

Для контекста: я создаю приложение, которое взаимодействует с TCP-сервером, размещенным в данный момент на моем локальном компьютере. Я использую SSLSocket для безопасного соединения. Все коммуникации в порядке. Я создал специальный класс для обработки всех сообщений с сервером. Я знаю, что мне нужно сделать это в фоновом потоке, поэтому я уже инициализировал ExecutorService и Handler в классе. Прежде чем объяснять проблему, позвольте мне показать код класса и время его вызова.
Класс связи:-

Код: Выделить всё

private ExecutorService executor = Executors.newSingleThreadExecutor();
private Handler handler = new Handler(Looper.getMainLooper());

public String genAuthToken(String userName, String passwd) throws Exception{
if(!connected)return null;
JSONObject json = new JSONObject();
json.put("func","genAuthToken");
json.put("userName",userName);
json.put("passwd",passwd);
JSONObject finalJSON = json;
final String[] reply = {""};

pw.println(finalJSON);
reply[0] = scan.nextLine();

json = new JSONObject(reply[0]);
if((int) json.get("code") == 200){
this.authToken = json.get("authToken").toString();
return (String) json.get("authToken");
}
return String.valueOf((int) json.get("code"));
}
MainActivity.java:-

Код: Выделить всё

LedGo client = new LedGo();
boolean connected = client.connect("192.168.1.4",1304,cf,()->{},()->{Snackbar.make(view,"Couldn't connect to server",Snackbar.LENGTH_SHORT).setAnchorView(R.id.fab).show();});
String authToken = client.genAuthToken("userName","passwd",true,()->{},()->{});
Теперь проблема в том, что я хочу получить authToken в MainActivity.java. Я знаю, что не могу получить его, как писал выше, но хочу знать, как извлечь некоторые данные из ExecutorService. Я подумал об одном варианте создания общедоступной переменной, к которой мог бы получить доступ MainActivity, но это непрактично, поскольку приложение будет отправлять множество запросов из разных потоков одновременно. Короче говоря, я хочу знать, как получить переменную из ExecutorService.execute() в MainActivity.java. Если что-то неясно, скажите мне, я был бы очень признателен за помощь.
Как получить некоторые значения из функции ExecutorService.execute() в Android Development, Java

Подробнее здесь: https://stackoverflow.com/questions/786 ... -with-exec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»