繁体   English   中英

有没有办法准确检测 android 中的活动何时被破坏?

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

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

有没有一种方法可以准确检测用户何时离开活动以避免任何页面内配置更改?

我正在使用的 onDestroy() 是这样的:

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

任何帮助,将不胜感激!!

如果您想检查用户是否结束了活动,即按下回,请执行以下操作:

@override
public void onBackPressed(){

//do something before we finish the activity

super.onBackPressed();

}

如果您想检查用户何时进入下一个活动,然后返回到相同的活动:

@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 在活动被销毁或完成时调用,并且不保证总是被调用,不要依赖它

我们可以通过实现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
    }
}

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

解决:谢谢大家的回答...对我来说onStop()效果很好,无论是按下后退按钮还是退出活动或应用程序本身,它都可以正常工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM