在Activity Android

时间:2016-01-13 07:33:47

标签: android android-activity android-service android-service-binding otto

我在活动A中通过startService()启动了android服务。我的应用程序中有多个活动。问题在于onDestroy()活动。

我正在做的是在onDestroy()活动中生成一个事件。 Application类是此事件的订阅者,我在Application类中停止此服务。我知道每次应用程序关闭时都不能保证调用onDestroy()

我还需要保持服务运行直到应用程序运行。 在申请结束时停止服务的最佳方法是什么?

我正在使用 otto 库来进行活动总线。

3 个答案:

答案 0 :(得分:0)

您可以在Service中启动HeadlessFragment并在HeadlessFragment中添加activity

实现和理解无头片段http://luboganev.github.io/blog/headless-fragments/

的示例

希望这有帮助。

答案 1 :(得分:0)

Application课程中实施ActivityLifecycleCallbacks

public class MyApplication extends Application implements ActivityLifecycleCallbacks {

    @Override
    public void onCreate() {
        super.onCreate();

        // initialize anything application wide

        // this is important, otherwise it won't work
        registerActivityLifecycleCallbacks(this);
    }

    @Override
    public void onActivityResumed(Activity activity) {
        // your application is running, do something
    }

    @Override
    public void onActivityPaused(Activity activity) {
        // your application was closed, stop any service or something else.
    }
}

这是跟踪整个应用程序生命周期的最佳方式。

答案 2 :(得分:0)

根据您的要求,您可以使用ActivityLifecycleCallbacksTRIM_MEMORY_UI_HIDDEN来检测Activtys'可视性。