当应用程序被销毁时,如何解绑定服务



我想在用户打开我的应用程序时启动一个服务,我的一些活动需要绑定该服务,当用户关闭我的应用程序时,我停止该服务。

问题是我在哪里可以停止服务。我希望我的服务工作时,我的应用程序是打开的。

我用Application.onCreate()方法启动服务,发现Application中没有onDestroy()方法。

我尝试在启动器活动onDestroy中停止它,但我不认为这是一个好方法,因为系统会在低内存时恢复启动器活动

如果基于运行的活动计数启动和停止服务会怎么样?下面是一个例子。

public class MyApplication extends Application implements Application.ActivityLifecycleCallbacks {
    private int startedActivitiesCount = 0;
    @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(this);
    }
    private void onAppStart() {
        // Start service
    }
    private void onAppQuit() {
        // Stop service
    }
    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {
        startedActivitiesCount++;
        if (startedActivitiesCount == 1) {
            onAppStart();
        }
    }
    @Override
    public void onActivityDestroyed(Activity activity) {
        startedActivitiesCount--;
        if (startedActivitiesCount == 0) {
            onAppQuit();
        }
    }
    @Override
    public void onActivityStarted(Activity activity) {
    }
    @Override
    public void onActivityResumed(Activity activity) {
    }
    @Override
    public void onActivityPaused(Activity activity) {
    }
    @Override
    public void onActivityStopped(Activity activity) {
    }
    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }
}

相关内容

  • 没有找到相关文章

最新更新