如何在销毁应用程序时取消绑定服务

时间:2016-09-21 15:12:49

标签: android android-service android-service-binding

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

}