如何在应用程序销毁时解除绑定服务

How to unbind a service when the application is destroyed

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

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

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

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

如果您根据 运行 活动计数启动和停止服务会怎样?这是一个例子。

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) {
    }

}