1

我阅读了这篇很棒的博客文章Android 架构教程:使用后台服务开发应用程序(使用 IPC)

作者展示了在单独进程中以固定间隔运行的推文检索服务。

该服务将无限运行。我意识到停止该过程,去管理应用程序并明确停止服务是唯一的方法。

请注意,这不是一种对电池非常友好的方式。甚至作者声称自己。

是的,Android 后台服务也有一个阴暗面——太多的服务在后台做太多的事情会减慢手机的速度并消耗电池。然而,这并不是我想在这篇文章中提出的内容,所以也许我们会在另一篇文章中回到资源管理礼仪。

但是,作者不再更新他的博客。

我尝试通过TweetViewActivity.

@Override
protected void onDestroy() {
    super.onDestroy();              

    try {
        api.removeListener(collectorListener);
        unbindService(serviceConnection);
    } catch (Throwable t) {
        // catch any issues, typical for destroy routines
        // even if we failed to destroy something, we need to continue destroying
        Log.w(TAG, "Failed to unbind from the service", t);
    }

    // New code added by Cheok. Not working. Not sure why.
    this.stopService(intent);

    Log.i(TAG, "Activity destroyed");
}

但这不起作用。我可以看到服务仍在运行。我可以知道,一旦我退出,停止 IPC 服务的正确方法是Activity什么?对于上述示例,什么是好的节电策略?

4

1 回答 1

1

它仍在运行的原因是系统从未调用过 onDestroy。

如果您查看此链接: http: //developer.android.com/reference/android/app/Activity.html您可以从图中看到 onDestroy 仅在系统即将从内存中清除您的应用程序时调用,并且根据内存限制,它可能永远不会被调用。

唯一可以保证被调用的回调是onPause()并且你应该依靠它来停止你的服务。

于 2012-12-27T10:35:40.267 回答