0

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

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.
        }

提前致谢

4

3 回答 3

1

这是Activity Launch Mode的典型案例。

官方的 Android 文档非常精确且连贯,恕我直言。

查看段落android:launchMode。singleTask模式可能您正在寻找的。

于 2012-08-23T16:34:41.253 回答
0

在活动的 onStop() 或 onPause() 方法中放入“finish()”命令。所以每次退出这个activity都会从activity stack中移除,所以不会有重复。

于 2012-08-23T16:34:02.447 回答
0

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

于 2012-08-23T17:12:44.730 回答