У меня возникла проблема с привязкой к сервису, которая дает мне орехи.Android - Мой сервис onunbind, но без привязки снова
У меня есть действие, которое связывает службу, и часто, когда пользователь входит и выходит из этой деятельности.
Проблема возникает, когда пользователь уходит в первый раз от активности, которая отключает службу и когда она снова заходит, не связывается снова.
Активность вызывает обязательную службу таким образом:
@Override
protected void onStart() {
super.onStart();
Intent intent = new Intent(this, CService.class);
intent.putExtra("id_local", (String) getIntent().getExtras().get("id_local"));
intent.putExtra("id_send", (String) getIntent().getExtras().get("id_send"));
bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
registerReceiver(uiUpdated, new IntentFilter("SERVER_MESAGE"));
mBound = true;
}
Если mConnection
определяется таким образом:
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
CService.LocalBinder binder =(CService.LocalBinder) service;
mService = binder.getService();
Log.d("Service", "onServiceConnected");
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
Log.d("Service", "onServiceDisconnected");
mBound = false;
}
};
И в onStop
я unbindService
:
@Override
protected void onStop() {
if (mBound) {
Log.d("ActivityStop", "Stoping activity");
unregisterReceiver(uiUpdated);
unbindService(mConnection);
mBound = false;
}
super.onStop();
}
onBind
в сервисе е является то, что один:
@Override
public IBinder onBind(Intent intent) {
final String id_local = intent.getStringExtra("id_local");
final String id_send = intent.getStringExtra("id_send");
if (!misatgesList.isEmpty()) {
misatgesList.clear();
}
mBackGroundTimer.schedule(new TimerTask() {
@Override
public void run() {
String serverResult = restRecive(id_local, id_send,
misatgesList.size());
if (serverResult != null) {
misatgesList.addAll(procesMisatges(serverResult,
id_local));
Intent i = new Intent("SERVER_MESAGE");
i.putExtra("recive", serverResult);
sendBroadcast(i);
}
}
}, 0, 1000);
return mBinder;
}
И onUnBind
является то, что один:
@Override
public boolean onUnbind(Intent intent) {
mBackGroundTimer.cancel();
misatgesList.clear();
Log.d("ServiceOnUnBind", "ServiceOnUnBind");
//stopSelf();
return super.onUnbind(intent);
}
Так что мой вопрос будет, как я могу связать снова службу, когда активность снова идет в? Или что мне делать, чтобы сохранить привязку до тех пор, пока пользователь не включится в эту активность?
Благодаря ответ, я пытался добавить 'getApplicationContext()' в коде (в 'OnStart()' деятельности и в 'onStop()' потому что есть я делаю 'unbindService()') и все еще не работаю ... – ALanao