我的活动尝试启动,然后绑定一个应该独立运行的服务。此服务打开GPS。
onCreate调用getApplicationContext.StartService
,onResume调用getApplicationContext.BindService
。 OnPause调用getApplicationContext.unbindService
,虽然它似乎永远不会正常运行(服务连接永远不会记录解除绑定,但是当我同样对待它时会记录绑定)。
不幸的是,当我打开我的最近列表并滑动活动时,服务停止,然后几乎立即重新启动,丢弃GPS连接。什么会导致这种行为?
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onResume() {
super.onResume();
// Start up the service
Intent intent = new Intent(getApplicationContext(), LockService.class);
getApplicationContext().bindService(intent, myConnection, Context.BIND_AUTO_CREATE);
}
@Override
protected void onPause() {
super.onPause();
Log.i(tag, "onPause");
if (isBound) {
getApplicationContext().unbindService(myConnection);
}
}
...
// Bound service stuff
LockService myService;
boolean isBound = false;
private ServiceConnection myConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service) {
LockBinder binder = (LockBinder) service;
myService = binder.getService();
isBound = true;
final boolean status = myService.getStatus();
Log.i(tag, "service bound");
}
@Override
public void onServiceDisconnected(ComponentName className) {
isBound = false;
Log.i(tag, "service unbound");
}
};
编辑:我检查了这个答案,但这只是阻止服务立即重启(它仍然挂起,并重新打开活动重新初始化它):
Android onCreate Service called when Activity onDestroy called
编辑2:我已经把这个答案放得太过分了。它似乎也无法解决任何问题。
How to force the onServiceDisconnected() get called?
编辑3:这可能是KitKat的事情。
答案 0 :(得分:0)
因为在“最新版本”(KK)中将应用程序从“最近”列表中删除会将其杀掉,所以我选择根本不在“最近”列表中显示我的应用程序。
哦,好吧,无论如何它真的不需要住在那里。它在通知栏内非常愉快地存在。我可怜任何不幸的人,需要通过计时器和一些陈腐的代码强行重启服务。