有没有办法准确检测 activity 何时在 android 中被销毁?

Is there a way to exactly detect when an activity is destroyed in android?

我正在 java 中制作一个 android 应用程序,其中我需要在 activity 被完全破坏时触发一些数据库请求,如果用户按下后退键可能会发生这种情况按钮或离开应用程序本身...但是即使用户仍在 activity 上,我应用程序中的 onDestroy() 功能也会随机触发...我猜这可能是配置更改但我无法为此找到合适的解决方案。

有没有一种方法可以准确地检测到用户何时留下 activity 以避免任何页内配置更改?

我用的onDestroy()是这样的:

@Override
protected void onDestroy() {
   /// do smthng
   super.onDestroy();
}

如有任何帮助,我们将不胜感激!!

如果你想检查用户是否结束了activity,意思是按下了,这样做:

@override
public void onBackPressed(){

//do something before we finish the activity

super.onBackPressed();

}

如果您想检查用户的时间,转到下一个 activity,然后返回到相同的 activity:

@override
public void onResume(){

//do something when return back to this activity

super.onResume();

}


@override
public void onPause(){

//do something before going to another activity

super.onPause();

}

onDestroy 在 activity 被销毁或完成时调用,并不保证总是被调用,不要依赖它

我们可以通过实现ActivityLifecycleCallbacks.

根据activity进入和退出前台来检查我们的应用程序是前台还是后台

很好的参考:https://medium.com/@iamsadesh/android-how-to-detect-when-app-goes-background-foreground-fd5a4d331f8a

引用上述文章,

@Override
public void onActivityStarted(Activity activity) {
    if (++activityReferences == 1 && !isActivityChangingConfigurations) {
        // App enters foreground
    }
}

并且,

@Override
public void onActivityStopped(Activity activity) {

    isActivityChangingConfigurations = activity.isChangingConfigurations();
    if (--activityReferences == 0 && !isActivityChangingConfigurations) {
        // App enters background
    }
}

通过它我们可以确定我们的应用程序是否在前台。在这里,您始终可以控制前台的 activity 内容,您可以根据这些内容检查和执行逻辑。

已解决: 谢谢你们的回答......对我来说 onStop() 完美地工作并且它在任何情况下都可以工作,无论是按下后退按钮还是退出 activity 或应用程序本身!