如何从堆栈中删除活动

时间:2012-08-23 16:01:22

标签: android

我正在创建一个应用程序,我想确保只有一个活动的一个实例应该保留在堆栈中。请告诉我如何实现它。这是我正在尝试的编码,但没有得到预期的结果。

ArrayList<String> runningactivities = new ArrayList<String>();

    ActivityManager activityManager = (ActivityManager)getBaseContext().getSystemService (Context.ACTIVITY_SERVICE); 

    List<RunningTaskInfo> services = activityManager.getRunningTasks(Integer.MAX_VALUE); 

        for (int i1 = 0; i1 < services.size(); i1++) { 
            runningactivities.add(0,services.get(i1).topActivity.toString());  
        } 

        if(runningactivities.contains("ComponentInfo{com.velosys.interview_preparation/com.velosys.interview_preparation.activities.MCQ}")==true){
             Toast.makeText(getBaseContext(),"Activity is in foreground, active",1000).show(); 
            //MCQ.
        }

提前致谢

3 个答案:

答案 0 :(得分:1)

这是活动启动模式的典型案例。

官方Android文档非常精确且连贯一致。

查看android:launchMode段。 singleTask 模式可能就是您要找的。

答案 1 :(得分:0)

将“finish()”命令放在活动的onStop()或onPause()方法中。因此,每次退出此活动时,它都将从活动堆栈中删除,因此不会有重复。

答案 2 :(得分:0)

您可以在启动活动时设置意图标记。在您的情况下FLAG_ACTIVITY_SINGLE_TOPFLAG_ACTIVITY_CLEAR_TOP