当前位置: 代码迷 >> Android >> 关于四种起步模式的中singleTask不解
  详细解决方案

关于四种起步模式的中singleTask不解

热度:7   发布时间:2016-04-28 03:09:44.0
关于四种启动模式的中singleTask不解
1=============================
从mainActivity->Activity1->mainActivity->.....中,这样如此一来一回,如果两个都是singleTask,我发现Activity1每次被访问,都会重新执行Activity1中的oncreate方法,既然移除,mainActivity为啥不会重新oncreate而Activity1中会重新执行oncreate方法
为啥网上看到关于singletask,这样描述
  singleTask
     如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
资料PPT这么描述
singleTask:设置为SingleTask的Activity总是在栈底,并且只能被实例化一次,允许其他的Activity压入singleTask的Activity所在的Task栈,若有新的Intent请求有此标志的Activity,则系统会清除有此标志的Task栈中的全部Activity,并把此Activity显示出来。

2============================
谁能解释一下这个原因啊
顺便问一下,在oncreate方法中对一个按钮匿名内部类进行监听,按home键再返回,会执行onstop->restart->onstart,没有执行oncreate,可是的按钮监听是写在oncreate里面的,为何监听还可以继续呢,按钮监听能响应的原理是什么样的?作用范围呢?
------解决思路----------------------
mainActivity到Activity1的时候,mainActivity执行了finish吗?

第2个问题你可以理解为设置监听器setOnclickLinstener方法调用一次全局有效,除非再调用一次。
------解决思路----------------------
引用:
Quote: 引用:

mainActivity到Activity1的时候,mainActivity执行了finish吗?

第2个问题你可以理解为设置监听器setOnclickLinstener方法调用一次全局有效,除非再调用一次。

我大概理解了网上的这个说法,1,2都是activity,但是一旦调用这个有singleTask的activity,在他栈上面的都会被清空,所以,2每次都被1清空,所以每次调用就会重新oncreate出来

是,singleTask一般默认下都是清除他上面的activity