我向名为“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);
}
});
}
}