2

我向名为“BindService”的服务添加了一个侦听器。
然后我杀死了将侦听器添加到“BindService”的活动。
“绑定服务”仍在运行。我可以在 Eclipse 的 DDMS 上看到它。
现在我再次启动了 Activity,我想再次向“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