如果我想在任何活动开始之前运行一些脚本,并且在所有活动停止之后,我会在android中放置这样的监听器吗?
我考虑过把它放在Android Application
类中,只需将方法放在onCreate
和onSaveInstanceState
中 - 但我不确定它们会在所有活动之前和之后被调用< / p>
答案 0 :(得分:1)
不幸的是,在Application类中,当应用程序停止时没有回调,但我认为你可以试试这段代码:
&LT;&LT;这里是旧代码&gt;&gt;
<强>更新强>: 应用程序类代码:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
startService(new Intent(this, Monitor.class));
}
}
后台服务代码:
public class Monitor extends Service implements Application.ActivityLifecycleCallbacks {
private static final String TAG = "Monitor";
int mActivitiesCount = 1; // At the moment when service started, the main Activity is already opened
public Monitor() {
}
@Override
public void onCreate() {
super.onCreate();
getApplication().registerActivityLifecycleCallbacks(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
getApplication().unregisterActivityLifecycleCallbacks(this);
super.onDestroy();
}
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
mActivitiesCount++;
Log.d(TAG, "onActivityCreated: count: " + mActivitiesCount);
}
@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) {
}
@Override
public void onActivityDestroyed(Activity activity) {
mActivitiesCount--;
Log.d(TAG, "onActivityDestroyed: count: " + mActivitiesCount);
if (mActivitiesCount == 0) {
Log.d(TAG, "All activities was destroyed");
// do something
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}