Android - 在主页按钮后返回应用程序时防止 onResume
Android - Prevent onResume when returning to app after home button
有什么方法可以防止在按下主页按钮后返回到应用程序时在 onResume 中执行代码?
按下主页按钮时调用什么方法?当按下主页按钮时,我可能会标记一些东西吗?
谢谢
After overriding above method, now you can easily listen HOME Key press in your activity using onKeyDown() method.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Hope this will help
点击主屏幕按钮会创建启动主屏幕的意图,然后启动该意图
正确。
如果是这种情况,我希望每当创建主屏幕时 onCreate() 方法都是 运行
不必要。如果它已经是 运行ning,它将使用 onNewIntent() 调用。
如果有人可以对此事提供一些启示,基本问题是当我点击主页按钮时是否调用了 onResume() 或 onCreate()
任何时候从用户输入的角度来看任何 activity returns 到前台,都会调用 onResume()。主屏幕在这方面应该没有什么不同。
onCreate() 在创建 activity 时被调用。不会创建现有活动,而只是将其带回前台。如果触发 activity 到 return 到前台的是 startActivity() 调用,则 activity 将使用 onNewIntent() 和 onResume()(通常是 onStart(),因为那很重要)。
参考:Which method is run when Home button pressed?
用户可以通过各种不同的方式离开您的应用。按主页只是其中之一。来电 phone 将离开您的应用程序,下拉通知列表并按下一个将离开您的应用程序,等等。在所有这些情况下,当用户 returns 访问您的应用程序时,onResume()
将被调用。这是标准的 Android 行为,它告诉您的应用它现在位于前台并且对用户可见。
如果您需要了解用户如何返回您的应用,那么您的架构存在缺陷。您可能需要将 onResume()
中的一些代码移回 onCreate()
或 onNewIntent()
.
感谢大家的帮助
我设法通过创建一个布尔值 executeOnResume 来解决这个问题,每次调用 onStop() 并关闭应用程序时我都会将其设置为 false。然后,当再次打开应用程序时,我在 onResume() 中检查此布尔值的状态,以选择是否应执行某些代码。
onStop()
//-----application stopped
@Override
protected void onStop() {
super.onStop();
//do not execute onResume code when app opened again
executeOnResume = false;
}
onResume()
//-----application resumed
@Override
protected void onResume() {
super.onResume();
//if true
if (executeOnResume) {
//do something
}
else {
//execute onResume true code the next time onResume is called. For example, returning from another activity
}
}
有什么方法可以防止在按下主页按钮后返回到应用程序时在 onResume 中执行代码?
按下主页按钮时调用什么方法?当按下主页按钮时,我可能会标记一些东西吗?
谢谢
After overriding above method, now you can easily listen HOME Key press in your activity using onKeyDown() method.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_HOME)
{
//The Code Want to Perform.
}
});
Hope this will help
点击主屏幕按钮会创建启动主屏幕的意图,然后启动该意图 正确。
如果是这种情况,我希望每当创建主屏幕时 onCreate() 方法都是 运行 不必要。如果它已经是 运行ning,它将使用 onNewIntent() 调用。
如果有人可以对此事提供一些启示,基本问题是当我点击主页按钮时是否调用了 onResume() 或 onCreate() 任何时候从用户输入的角度来看任何 activity returns 到前台,都会调用 onResume()。主屏幕在这方面应该没有什么不同。
onCreate() 在创建 activity 时被调用。不会创建现有活动,而只是将其带回前台。如果触发 activity 到 return 到前台的是 startActivity() 调用,则 activity 将使用 onNewIntent() 和 onResume()(通常是 onStart(),因为那很重要)。
参考:Which method is run when Home button pressed?
用户可以通过各种不同的方式离开您的应用。按主页只是其中之一。来电 phone 将离开您的应用程序,下拉通知列表并按下一个将离开您的应用程序,等等。在所有这些情况下,当用户 returns 访问您的应用程序时,onResume()
将被调用。这是标准的 Android 行为,它告诉您的应用它现在位于前台并且对用户可见。
如果您需要了解用户如何返回您的应用,那么您的架构存在缺陷。您可能需要将 onResume()
中的一些代码移回 onCreate()
或 onNewIntent()
.
感谢大家的帮助
我设法通过创建一个布尔值 executeOnResume 来解决这个问题,每次调用 onStop() 并关闭应用程序时我都会将其设置为 false。然后,当再次打开应用程序时,我在 onResume() 中检查此布尔值的状态,以选择是否应执行某些代码。
onStop()
//-----application stopped
@Override
protected void onStop() {
super.onStop();
//do not execute onResume code when app opened again
executeOnResume = false;
}
onResume()
//-----application resumed
@Override
protected void onResume() {
super.onResume();
//if true
if (executeOnResume) {
//do something
}
else {
//execute onResume true code the next time onResume is called. For example, returning from another activity
}
}