2

「BindService」というサービスにリスナーを追加しました。
そして、「BindService」にリスナーを追加したアクティビティを強制終了しました。
「BindService」はまだ実行中です。日食のDDMSで見ることができます。
ここでアクティビティを再度開始し、リスナーを「BindService」に再度追加したいと考えています。
どうすればいいですか?

「BindService」は数を数えるだけのサービスです。

次のコードでは、Activity を再度開始して「button_sendwords」ボタンをタップすると、再び 0 からカウントを開始します。それは私の目的ではありません。

public class MainActivity extends Activity {

private ICallbackService service;
private static final int CALLBACK_MESSAGE = 1;

private Handler handler = new Handler(){
    @Override
    public void dispatchMessage(Message msg){
        if(msg.what == CALLBACK_MESSAGE){
            TextView resultlbl = (TextView)findViewById(R.id.label_result);
            resultlbl.setText((String)msg.obj);
        }else{
            super.dispatchMessage(msg);
        }
    }
};

private ICallbackListener listener = new ICallbackListener.Stub() {
    @Override
    public void receiveMessage(String message) throws RemoteException {
        handler.sendMessage(handler.obtainMessage(CALLBACK_MESSAGE, message));
    }
};

private ServiceConnection conn = new ServiceConnection(){

    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        service = ICallbackService.Stub.asInterface(binder);
        try{
            service.addListener(listener);
        }catch(RemoteException e){
        }
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
    }

};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btnSendWords = (Button)findViewById(R.id.button_sendwords);

    btnSendWords.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MainActivity.this, BindService.class);
            bindService(intent, conn, BIND_AUTO_CREATE);
        }
    });
}    

}

4

0 に答える 0