Activity
确保无论系统从哪个任务启动活动,都只会创建一个活动实例并将其添加到新任务堆栈的顶部,也就是说,该实例启动的其他活动将自动在另一个任务中运行。再次启动此活动的实例时,将重用现有任务和实例。将调用此实例的onNewIntent()方法,将Intent实例传递给此实例。与singleTask一样,系统中同时只有一个这样的活动实例。
<style name="roomRatingBar" parent="@android:style/Widget.RatingBar">
<item name="android:progressDrawable">@drawable/ratingbar_full</item>
<item name="android:minHeight">24dip</item>
<item name="android:maxHeight">24dip</item>
</style>
按Home将上一个任务切换到后台
长按Home键显示最近执行的任务列表
单击启动器或主屏幕中的应用程序图标以打开新任务或将现有任务安排到前台
在单任务模式下启动活动时,系统将搜索是否已存在合适的任务。如果是,任务将被分派到前台以重用任务。如果任务中已存在要启动的活动的实例,请清除该实例上方的所有活动,并向用户显示该实例。如果现有任务中没有要启动的活动实例,请在任务顶部启动一个实例。如果任务不存在,将启动一个新任务,并在新任务中启动单一任务模式下的活动实例。
启动单个实例的活动时,它将在系统中搜索此活动的实例是否已存在。如果存在,它会将此实例的任务安排到前台,并重用此活动的实例(此任务中只有一个活动)。如果它不存在,它将打开一个新任务,并在此新任务中启动此singleInstance模式的活动实例。
进程解析:活动调用startActivity后,它最终调用attach方法,在PolicyManager中实现Ipolicy接口,然后实现Policy对象,然后调用makenewwindow(Context)方法,该方法返回PhoneWindow对象。PhoneWindow是Window的子类。在这个PhoneWindow中,有一个DecorView的内部类,它是所有应用程序窗口的根视图,直接控制是否显示活动(参考旧驱动程序的原始单词…)。好吧,其中有一个LinearLayout和两个FrameLayout。它们分别用于安装ActionBar和CustomView,并将setContentView()加载的布局放入此CustomView!