我是一名初中生,遇到问题。
我正在Android(Java)上使用Realm,我想在关闭本地BDD时删除数据。我总是在开始新活动之前完成我的活动,在用户决定关闭应用程序之前,我永远不知道最后的活动是什么。
关闭应用程序后是否可以执行代码?
编辑
这是我的代码,感谢@Mohanad
public class ApplicationClass extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
RealmConfiguration mRealmConfig = new RealmConfiguration.Builder()
.schemaVersion(1)
.migration(new RealmMigrations())
.inMemory()
.build();
Realm.setDefaultConfiguration(mRealmConfig);
registerActivityLifecycleCallBack();
Log.i("XXX", "I've been created");
}
public void registerActivityLifecycleCallBack() {
ActivityLifecycleCallbacks mActivity = new ActivityLifecycleCallbacks() {
int mCounter = 0;
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
mCounter++;
Log.i("XXX", "I'm called again and again");
}
@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 outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
mCounter--;
if (mCounter == 0) {
Realm mRealm = Realm.getDefaultInstance();
mRealm.close();
}
}
};
}
}
使用onDestroy()方法并在其中编写代码。
我认为最简单的解决方案是在您的应用程序类中使用计数器和ActivityLifecycleCallbacks,如下所示:
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
int activityCounter = 0;
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
activityCounter ++;
}
@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) {
activityCounter--;
if (activityCounter == 0) {
//last activity on destroy
}
}
});
希望这会有所帮助。
不确定这是否是您要寻找的东西,但这也许会有所帮助。
在您的onDestroy中,检查isTaksRoot()->活动方法,以查看它是否是任务根。isTaskRoot docs