Я строю свое приложение, и я использую socket.io для связи с веб-сервером. У меня есть java-файлы, которые занимаются тем, что не являются действиями и работают в фоновом режиме. Таким образом, чтобы запустить их, он будет создан в виде активности и сокеты будут работать. Теперь веб-сервер запускает сообщения, которые я обрабатываю в обратном вызове, и передаю данные активности. Теперь я ищу лучший способ передать данные из работающего класса неактивности в текущую работу.Как передать данные из класса неактивности в действие в android?
Что я сделал раньше, было использование намерения, созданного классом non-activity, который отправил данные в текущую активность. Активность должна была быть изменена на одностороннее или синглетное, чтобы избежать активности от перезапуска на себя. Проблема в том, что форма моей основной активности я не могу использовать один верхний запуск, потому что в некоторых случаях мне нужно, чтобы actvity обновлялся сам по себе.
Так что я не могу правильно получить сокеты, работающие над основным действием, потому что я могу получать данные только в том случае, если я изменю свою основную деятельность на singletop, что не идеально подходит для приложения. Я сначала попробовал назвать функцию в acivity, которая будет вызвана классом non-activity, но кажется, что это незаконно, поэтому я довольно застрял здесь.
@Override
public void on(String event, IOAcknowledge ack, Object... data) {
System.out.println("Server may have triggered event '" + event + "'");
if (event.equals("message")) {
System.out.println(data[2]);
Intent newIntent = new Intent(Chat.mContent, Chat.class);
Bundle extras=new Bundle();
extras.putString("name", (String)data[1]);
extras.putString("MSG", (String)data[2]);
newIntent.putExtras(extras);
Chat.mContent.startActivity(newIntent);
}
if (event.equals("ready")) {
System.out.println("Received the ready callback");
try{
Intent newIntent = new Intent(TabExercise.mContext, TabExercise.class);
newIntent.putExtra("ready", event);
TabExercise.mContext.startActivity(newIntent);
}catch(Exception e){
System.out.println("Caught an error");
}
}
}
Это метод класса non-activity, в котором отправляются данные.
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Bundle extras=intent.getExtras();
if (intent.hasExtra("ready")) {
// Retrieve the message and call getMsg(String)
connect.starter(SaveSharedPreference.getName(TabExercise.this), SaveSharedPreference.getUserId(TabExercise.this));
}
}
Это где намерение поймана в mainactivity. Не идеально.
совместно перфорация может работать – KOTIOS
Хм, я не вижу, как это будет работать, так как она должна работать в режиме реального времени , –