Service
定期的にアクティビティにデータを送信できるアンドロイドを作成しました。
binds
これまでのところ、私が作成したアクティビティを作成しservice
ました。しかし、以前にバインドされたアクティビティにメッセージを送り返すときに、アクティビティがフリーズするという問題があります。MessengerService
サンプルの例に基づいてこの例を作成しましたAPI Demo
。
以下は、サービスクラスで記述されたコードであり、その中に作成したものがありますIncomingHandler
case MSG_SET_VALUE:
mValue = msg.arg1;
for (int i=mClients.size()-1; i>=0; i--) {
final Messenger local = mClients.get(i);
final int index = i;
counterThread = new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
int j=0;
while(true){
try {
Thread.sleep(6000);
local.send(Message.obtain(null,
MSG_SET_VALUE, j++, 0));
Log.d("Thread " , j + "");
} catch (RemoteException e) {
// TODO Auto-generated catch block
mClients.remove(index);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
counterThread.run();
}
break;
したがって、次のコードを使用してアクティビティからメッセージを送信すると、上記のケースがトリガーされます。
msg = Message.obtain(null,
MyService.MSG_SET_VALUE, this.hashCode(), 0);
mService.send(msg);
アクティビティで着信メッセージを処理しています
class IncomingHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MyService.MSG_SET_VALUE:
System.out.println("DATA" + msg.arg1);
// mCallbackText.setText("Received from service: " + msg.arg1);
break;
}
}
}
だから私はこれがサービスから定期的にデータを取得する正しい方法なのか、それともここに何かが欠けているのか知りたい