2015-08-27 36 views
0

我有2个活动,一个4位数字引脚样式登录活动(MainActivity)和一个内容活动。每次运行应用程序时都要重新启动应用程序?

这个应用程序存储隐私信息,以及在恢复活动时不应该看到的内容,因此我希望应用程序在每次启动时都要在登录活动中重新启动,而不是从停止的地方继续。

我已经尝试过在内容活动的onStop()和onResume方法中搞乱,但这些似乎是非常不可靠的,因为有时当我有onRestart设置重新启动登录活动时,它将不会启动它,并且要求在onStop()中激活登录屏幕将阻止我能够完成后台任务,例如保存数据。

有什么我可以添加到这个清单文件,将告诉该应用从登录活动重启不管是什么?一个在这样的一个应用程序工作时可能发生的最糟糕的事情是,信息是比不是被迫登录业主以外的其他人访问..

+0

我不认为这是在清单一样,任何选项...你需要在此改变的onStop和的onResume methods..and想出一个办法,让你的应用程序知道什么时候被认证.... –

+0

我“会大概只需要设置的onStop方法每个必要的时间来拉起loginscreen,唯一的问题是,从我的内容活动中,用户能够将大量图像上传到会被存储在应用程序的应用程序通过的AsyncTask内部存储,并且如果的onStop方法告诉该应用去loginscreen,那么如果用户在上载过程停止活动,那么大量的数据的应用程序跟踪在过程中可能会引发变形。 –

+0

我不认为你需要onStop()来实现你的目标。我认为你只需要重写onResume()和onRestart()。 – iTurki

回答

1

你需要的是把重点放在两个电话你的内容的活动:

  • onPause()这是你杀的内容活动,从堆栈中删除。您可以轻松地做到这一点:

    @Override 
    public void onPause() { 
        super.onPause(); 
        //Save your data here 
    
        finish(); //Kill Contect Activity. 
    } 
    
  • onRestart()这是你将用户重定向到的主要活动。

    @Override 
    public void onRestart() { 
        super.onRestart(); 
        Intent i = new Intent(this, MainActivity.class); 
        startActivity(i); 
        finish(); //Kill Contect Activity. 
    } 
    

This graph可以帮助您了解活动的生命周期:

enter image description here

+0

我实现这些修改的内容活动的活动(延伸ActionBarActivity),其结果是,当我登录屏幕试图在成功登录尝试,我假设的onResume()开始内容的活动就叫做从而使登录活动从一开始就没有实际进入内容活动。 –

+0

@ZacharyWathen你是对的!我没有注意到这一点。好的,现在尝试将'onResume()'的代码移动到'onRestart()'。我认为它应该起作用。我编辑了答案。 – iTurki

+0

出于某种原因,onRestart并不总是用这个应用程序调用。有几种情况下,我登录后,点击主页按钮,然后回到应用程序,只是为了恢复我离开的地方,而不是应用程序需要登录屏幕。我所做的是添加一个布尔变量,只有在内容活动加载后才设置为true。 (在调用onResume之后)调用isLoaded。在onResume中,如果isLoaded = true(它不是在设置活动之前调用onResume时),我将它设置为仅启动loginActivity。 –

0

你需要的是设置标志android:clearTaskOnLaunchandroid:excludeFromRecents在清单的活动。

+0

我已经将android:excludeFromRecents添加到了我的活动中,并且我回去并将android:clearTaskOnLaunch添加到了我的活动中,结果没有显示我的应用程序的数据,而是使用“hello world”的空白活动。然后我在应用程序标签中尝试了它,但仍然没有运气。如果我无法获得上述解决方案,我将更深入地探讨这个解决方案。谢谢! –

相关问题