我想在用户打开我的应用程序时启动服务,我的一些活动需要绑定服务,当用户关闭我的应用程序时,我会停止服务。
问题是我在哪里可以停止服务。当我的应用程序打开时,我希望我的服务能够正常工作。
我在Application.onCreate()
方法中启动了该服务,我发现onDestroy()
中没有Application
方法。
我尝试在启动器活动onDestroy
中停止它,但我不认为这是一个好方法,因为系统会在内存不足时恢复启动器活动。
答案 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) {
}
}