我正在尝试在我的应用程序开始时启动服务,并且我需要它重新启动服务,让用户决定强制关闭服务,即使应用程序正在运行(可以,他强行关闭应用程序,但我需要阻止在应用程序运行时关闭服务。
所以我开始扩展Application类,这就是我正在做的启动服务......
ServiceConnection conn = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
Log.d("start","ok");
}
public void onServiceDisconnected(ComponentName className) {
}
};
bindService(new Intent(this,DueService.class), conn, 0);
但是,这不会启动该服务。虽然,使用startService似乎工作。有什么想法吗?
答案 0 :(得分:4)
使用bindService()
中的Application
毫无意义,因为您永远无法拨打unbindService()
。
当然,最好的是,如果服务主动为用户提供价值,那么您的服务只会在内存中,而不仅仅是因为您的应用程序的某些其他组件正好被加载。如果您按照startService()
使用Application
的计划,那么您现在正朝着泄露这项服务的方向前进。在Android中,“应用程序正在运行”作为生命周期构造没有真正的概念,因此您没有合理的时间来停止服务。
(顺便说一句,虽然Application
有一个onTerminate()
方法,但它永远不会被调用)