android面试(基础篇 10)

来源:互联网 发布:淘宝企业店入驻 编辑:程序博客网 时间:2024/06/06 08:23

7)Activity的launch mode的应用场景

    standard:创建一个新的Activity

    singleTop:栈顶不是该类型的Activity,则创建一个新的Activity。否则,onNewIntent

    singleTask:回退占中没有该类型的Activity,则创建Activity。否则,onNewIntent+ClearTop

    注意:

    (1)设置了singleTask启动模式的Activity,它在启动的时候,会先在系统中查找属性值affinity

            等于它的属性值taskAffinity的Task存在;如果存在,他就会在这个Task中启动,否则会在新

            的任务栈中启动。因此,如果我们想要设置singleTask启动模式的Activity在新的任务中启动

            就要为他设置一个独立的taskAffinity属性值。

    (2)如果设置了singleTask模式的Activity不是在新的任务中启动时,他会在已有的任务中查看

            是否已经存在相应的Activity实例,如果存在,就会把位于这个activity实力上面的Activity

            全部结束掉,即最终这个Activity实例会位于任务的Stack顶端中。

    (3)在一个任务栈中只有一个singleTask启动模式的Activity存在。他的上面可以有其他的Activity

            这点与singleInstance是有区别的。


    singleInstance:回退栈中,只有这一个Activity,没有其他Activity。

   

    应用场景:

    singleTop:适合接收通知启动的内容显示页面。例如,某新闻客户端的新闻内容页面,如果收到10

    个新闻推送,每次都打开一个新闻内容页面是很烦人的。

    singleTask:适合作为程序的入口点。例如浏览器的主界面。不管从多少个应用启动浏览器,只会

    启动主界面一次,其余情况都会周onNewIntent,并且会清空主界面上面的其他页面。

    singleInstance:闹铃的响铃界面,你以前设置了一个闹钟:上午6点。在上无5点58,你启动了闹铃

    设置界面,并按home回桌面;上午6点59分是,你在微信和朋友聊天;6点事,闹铃响了,并且弹出

    了一个对话框形式的 Activity(名为 AlarmAlertActivity) 提示你到6点了(这个 Activity 就是以 

    SingleInstance 加载模式打开的),你按返回键,回到的是微信的聊天界面,这是因为 AlarmAlertActivity 

    所在的 Task 的栈只有他一个元素, 因此退出之后这个 Task 的栈空了。如果是以 SingleTask 打开

    AlarmAlertActivity,那么当闹铃响了的时候,按返回键应该进入闹铃设置界面。

    

8)android的多线程实现

    有以下几种方式:

    (1)Activity.runOnUiThread(Runnable)

    (2)View.post(Runnable); View.postDelay(Runnable,long)

    (3)Handler

    (4)AsyncTask


0 0
原创粉丝点击