Android清除总是背堆栈

时间:2014-07-21 11:57:01

标签: android back-stack

这里有很多关于这个主题的问题,但没有一个答案适合我。我正在编写一个可以携带敏感数据的应用程序,因此我希望每次进入应用程序时都让用户登录。我已经尝试过singletask启动模式和clearTaskOnLaunch,我也使用“从最近的排除”属性隐藏“最近的应用程序”中的任务。

但是现在应用程序的行为与“后退”按钮的行为不同。

示例:

LoginActivity> MainActivity> HelpActivity

现在用户按下主页按钮,因为应用程序不在最近列表中,用户需要使用启动器图标。 LoginActivity按预期弹出,但是,如果用户按下后退按钮,它将转到Helpactivity而不是退出应用程序。

修改:我已经找到了解决方案,问题是我在启动finish()后在LoginActivity上呼叫MainActivity。因此,当点击启动器时,Android系统正在重新设置活动,将新实例化的LoginActivity放在堆栈的顶部,而不是清除它,只留下根活动,因为没有这样的活动。

1 个答案:

答案 0 :(得分:0)

Have you tried noHistory option in manifest?
Also you can implement this by the use of SharedPreferences:
public void onPause(){
    super.onPause();
        Context context = getApplicationContext();
                ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
                List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
                if (!taskInfo.isEmpty()) {
                  ComponentName topActivity = taskInfo.get(0).topActivity; 
                  if (!topActivity.getPackageName().equals(context.getPackageName())) {

                    Toast.makeText(xYourClassNamex.this, "YOU LEFT YOUR APP. ", Toast.LENGTH_SHORT).show();
//Here you can maintain a boolean value in sharedpreferences stating everytime you leave and login into the app. 


                  }
                }
      }

以下是链接:click on home key and application run in background