Android 代码设置启动模式

今天一个朋友问道了这个问题,从A activity启动一个B activity,B启动一个C,C启动一个D,A、B、C、D四个都是默认的启动模式。现象需要D直接回到A activity,但是不能重新创建一个新的Activity。怎么给D的Activity 设置一个Intent的参数能实现这个需求。

其实我们之前写过启动模式是SingleTop,或者SingleTask的就知道,当一个activity的时候,如果我们在从其他的一个activity重新启动已经启动了的这个activity,发现不会重新创建新的activity。也就是会重新设置显示。这里就是这样的一个需求。要是可以设置启动模式,应该我们设置一个A activity为SingleTask就可以实现。

 
            
                

                
            
        
Android 代码设置启动模式_第1张图片
发现两次的activity是同一个。

今天这里需要用代码设置一个Intent,如果和上面一致应该也是设置一个SingleTask之类的FLAG.

但是我们没有在Intent中找到SINGLETASK的FALG,我们找到了一个FLAG_ACTIVITY_SINGLE_TOP,从注释看If set, the activity will not be launched if it is already running at the top of the history stack.应该和SingleTop差不多。从网上搜索一下,发现很多都是这么说的,这个就是和我们xml中设置SingleTask效果一样。我们可以试一试,设置上发现好像不合适。打开了新的activity.这是怎么回事。发现和这个一起的还有一个FLAG_ACTIVITY_CLEAR_TOP查看解释,If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity。all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.
理解上说是如果存在一个Activity就不会创建新的,而是启动这个旧的,并且清除这个anctivity以上的所有。所以我们把这个FLAG也添加上去,测试一下。发现结果和设置SingleTask的一样。

结果:


而网上说的都是只设置FLAG_ACTIVITY_SINGLE_TOP,不知道是不是设置的问题。这里做一个记录,有问题方便纠正,其他有关Activity的启动模式的问题,可以查阅其他资料。

你可能感兴趣的:(安卓基础)