有没有办法准确检测 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 或应用程序本身!
我正在 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
.
很好的参考: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 或应用程序本身!