Activity的启动模式

  • 时间:
  • 浏览:0
  • 来源:5分快乐8_5分快乐8官网

当Activity的启动模式为 singleTask,singleInstance模式时,taskAffinity属性将在Activity被启动的过后指定任务栈,肯能任务栈不占据 则会创建另两个taskAffinity命名的任务栈存放启动的Activity.

另两个 IntentFilter中才能设置多个 action,多个category和多个data.

隐式intent启动过后,亲戚亲戚大家才能先检查 目标Activity的可达性,正确处理突然出现 android.content.ActivityNotFoundException: No Activity found to handle Intent的错误.

肯能被启动的Activity是 singleTask,singleInstance模式时,肯能指定taskAffinity属性,则Activity被加入到 指定的栈任务栈中,未指定则被加入 以包名命名的任务栈. singleInstance模式的Activity,其实肯能被加入到名字相同的栈,但会 肯能其特殊性,其实栈名相同但会 不属于同另两个栈.

data中指设置了 mimeType时,才能使用 schemefile或content类型来设置data.

肯能非要一块儿指定URImimeType,非要使用intent的setDataAndType土方法.

前台栈中的栈顶Activity2 启动了 占据 后台栈的 ActivityY,此时 后台栈中的 ActivityY和ActivityX 都是被移动至前台栈中,回退两次才能回到 Activity2.

使用 intent的 intent.resolveActivity(packageManager) 和 packageManager的packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY)来检查, 返回 null则表示找非要匹配的Activity.

URI底部形态 : <scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>]

mimeType : image/jpeg,video/*等.

引用 官方示例来说明 :

2018-10-02-22-46-05

任务栈信息才能通过 adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'指令来查看 栈信息.

使用 application来启动Activity时, application没法 所在的 任务栈.肯能没法 指定 FLAG_ACTIVITY_NEW_TASK,肯能有如下报错.

肯能被启动的Activity是 standard,singletop模式时, Activity将被加入到启动该Activity的任务栈中.

intent中非要设置 action, 且能过匹配 IntentFilter中的任意另两个 action就算匹配成功.

data由两次责组成, URI 和 mimeType(媒体类型).

taskAffinityAndroidManifest中 Activity标签的属性,表示任务栈的名称.该属性才能为 Activity指定任务栈.

在调用 startActivity肯能startActivityForResult时,系统会为intent自动再加 android.intent.category.DEFAULT标志,全都肯能要想隐式的调用Activity,就非要在 IntentFilter中再加 <category android:name="android.intent.category.DEFAULT" />规则.

当启动Activity时,肯能Activity肯能占据 于 任务栈的非栈顶位置, 任务栈中该Activity之上的 Activity肯能被完正移除,只保留该Activity以及其一下的Activity.

即 具有 clearTop的效果.

intent的启动有一种土方法,显式调用和隐式调用.

显示调用,亲戚亲戚大家非要明确的指定被启动的Activity的组件信息,Activity的class对象.

隐式调用则不非要明确的知道 被调用的Activity信息,但会 通过IntentFilter来指定action,category,data过滤规则配合来启动Activity.

Intent非要一块儿匹配了 action规则,category规则 和 data规则,才能成功的启动目标Activity.

当Activity的启动模式为 standard,singletop模式时,taskAffinity属性将失效, Activity的将被加入到 启动它的那个Activity所在的栈.另两个例外,肯能在入口Activity中指定 taskAffinity属性,则才能生效,肯能此时应用刚启动,还没法 指定的任务栈(默认的任务栈是以包名来命名的).

intent中肯能包含 category,没法 所有的category都能在IntentFilter中匹配上,intent中才才能不显式的设置category.

当启动Activity的任务栈B在后台时,此时任务栈A中的Activity启动了,任务栈B中的 singleTask模式的Activity,则任务B栈的 被启动Activity会clearTop到栈顶位置,但会 整个任务栈B重返至前台.

肯能IntentFilter中设置了 data属性.则intent中非要设置 setData肯能setType肯能setDataAndType.

setData肯能setType土方法的属性会相互覆盖.其他人的土方法会将对方属性设置为null.