2017-01-20 112 views
0

我已经创建了一个android应用程序,当我关闭应用程序(使用home按钮)并重新打开应用程序时,它不会再次调用onCreate()。相反,它只是从内存中加载。每次运行android应用程序时都运行on

如何确保每次打开应用程序onCreate()都被执行?


编辑: 应用必须做onCreate()同样的事情在onResume()

当我将确切的代码复制到函数onResume()时,它的功能不一样。

因此,我想完全关闭应用程序(和进程)(或做类似的事情),所以onCreate()总是在重新打开应用程序后被调用。

+1

你可以使用'onstart'? –

+0

android应用程序框架调用Activity的回调方法,如onCreate(),onResume()等。如果您希望每次将应用程序的活动引入前台时使用onResume()来执行一些代码。阅读更多关于这些回调https://developer.android.com/guide/components/activities/activity-lifecycle.html – AADProgramming

+0

我建议你发布一个单独的问题,你提供[mcve]并解释,**在细节**,什么“它不一样”的意思。 – CommonsWare

回答

0

我知道你想每次打开应用程序时都会调用onCreate(),但不会。这是因为当您再次打开应用程序时,您的应用程序仍然处于最新状态。

  1. 当您在最近存在最近的应用程序中打开应用程序时,您的onStart()被调用。尝试在onStart()中添加你的逻辑。
  2. 如果您只想每次调用onCreate(),则必须在按住home时从最近删除。为此你需要使用下面的活动inManifets使在对activity.Try清单呸变化:

    机器人:clearTaskOnLaunch =“真”

    机器人:finishOnTaskLaunch =“真”

+0

我会尝试编号2.编号1不是一个选项,因为onResume中的代码不能像onCreate(相同的代码)那样工作。 – Laura

+0

是的。它会工作..!希望它有帮助。 –

+0

不幸的是,这对我不起作用。 – Laura

-1

只要打电话onResume这将做伎俩。

@Override 
protected void onResume() { 
    super.onResume(); 
    // TODO: do what ever you want 
} 

看一看这个网站:Activity-lifecycle concepts

+2

你打电话错了超级 – Submersed

+0

我知道这是一种方式,但应用程序在启动时(onCreate)做的很好,而在重新打开时(onResume)它必须做同样的事情,但事实并非如此。所以我想让它在每次应用程序打开时都创建(无论是开始还是重新打开) – Laura

1

当我关闭应用程序(使用home键)

这并不“关闭应用程序“,关于”关闭“的任何典型定义。在桌面操作系统中最接近的比喻是将应用程序最小化。

我怎样才能确保每次打开应用程序onCreate()执行?

你不知道。相反,您使用更合适的其他lifecycle methods,例如onStart(),它将在onCreate()(当活动首次创建时)之后被调用,此时活动从后台返回到前台。

+0

我知道它不会关闭应用程序。如果有合适的方法来关闭应用程序(也许它的过程),所以重新打开应用程序将调用创建我想知道它。 我知道我可以覆盖onstart,但问题是:应用程序在重新打开应用程序时的行为与启动应用程序时的行为不同。 – Laura

+0

@Laura:“如果有合适的方法来关闭应用程序(也许它的过程),所以重新打开应用程序将调用创建我想知道它” - 这不是一个合适的解决方案,恕我直言。 – CommonsWare

0

我已将System.exit(1)放入onStop()函数中。从最近的应用程序中打开应用程序后,它运行onCreate()

所以这对我有效。

相关问题