基本的に、アクティビティによって初期化された、実行中のアクティビティのバックグラウンドで実行されているソケット クラスがあります。何が起こるかというと、socket.io サーバー上のコンピューターは、コールバックで受信できる Android アプリにログオンしたメッセージを私に送信できますが、そのメッセージを現在実行中のアクティビティに渡したいので、インテントを使用できます。これにより、アクティビティが再び開始されるためです。これが私が試したものです。
@Override
public void on(String event, IOAcknowledge ack, Object... data) {
// if((JSONObject) data[0]!=null)
//callback.on(event, (JSONObject) data[0]);
System.out.println("Server triggered event '" + event + "'");
//Log.d("Message","Yeah");
if (event.equals("message")) {
System.out.println(data[2]);
//System.out.println("Server sent this '" + data.getString("message") + "'");
Chat chatter=new Chat();
chatter.getMsg((String)data[2]);
}
}
コールバックを受け取るメソッドです。ご覧のとおり、実行中のアクティビティでメソッドを呼び出してデータを渡しました。はい、これ。
public void getMsg(String mssg){
//System.out.println(mssg);
HashMap mapper=new HashMap();
mapper.put("message"mssg);
mapper.put("name","them");
chatList.add(mapper);
//connect.start(msg);
ListAdapter adapter =new SimpleAdapter(
Chat.this, chatList,
R.layout.chat_view, new String[]{"message","name"},
new int[]{R.id.senderchatMessage, R.id.senderchatName}
);
setListAdapter(adapter);
//return msg;
}
このメソッドはアクティビティにあります。ただし、 IllegalStateException: System services not available to Activities before onCreate() というエラーが表示されますが、これが何を意味するのか本当にわかりません。