在Application的onCreate中启动一个服务



当我的应用程序开始时,我试图启动一个服务,我需要它的服务重新启动,以防用户决定强制关闭服务,即使应用程序正在运行(它是好的,他强制关闭应用程序,但我需要防止关闭服务,而应用程序正在运行)。

所以我开始扩展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似乎是可行的。什么好主意吗?

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

当然,最好的情况是,你的服务只有在积极地向用户传递价值时才会在内存中,而不是仅仅因为你的应用程序的其他组件碰巧被加载了。按照目前的情况,如果您按照从Application使用startService()的计划行事,那么您正在朝着泄漏此服务的方向前进。在Android中,"应用程序正在运行"并没有真正的概念作为一个生命周期结构,所以你不会有一个逻辑时间来停止服务。

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

相关内容

最新更新