在onCreate of Application中启动服务

时间:2011-12-08 13:20:57

标签: android service android-service

我正在尝试在我的应用程序开始时启动服务,并且我需要它重新启动服务,让用户决定强制关闭服务,即使应用程序正在运行(可以,他强行关闭应用程序,但我需要阻止在应用程序运行时关闭服务。

所以我开始扩展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似乎工作。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

使用bindService()中的Application毫无意义,因为您永远无法拨打unbindService()

当然,最好的是,如果服务主动为用户提供价值,那么您的服务只会在内存中,而不仅仅是因为您的应用程序的某些其他组件正好被加载。如果您按照startService()使用Application的计划,那么您现在正朝着泄露这项服务的方向前进。在Android中,“应用程序正在运行”作为生命周期构造没有真正的概念,因此您没有合理的时间来停止服务。

(顺便说一句,虽然Application有一个onTerminate()方法,但它永远不会被调用)