• 启动Activity的形式


    问:为什么service里面startActivity抛异常,activity不会?

    No1:

    启动activity有两种形式:

    1)直接调用Context类的startActivity方法;这种方式启动的Activity没有Activity栈,因此不能以standard方式启动,必须加上FLAG_ACTIVITY_NEW_TASK这个flag,服务就是通过Context调用

    2)调用被Activtiy类重载过的startActivity方法,通常在我们的Activity中直接调用这个方法就是这种形式

    No2:

    Activity继承了ContextThemeWrapper,Service继承了ContextWrapper

    No3:

    ContextWrapper源码分析:

    Context.startActivity-->

    ContextImpl.startActivity-->

    Instrumentation.execStartActivity-->

    ActivityManagerNative.getDeault().startActivity-->

    其中ContextImpl中判断是否为FLAG_ACTIVITY_NEW_TASK标记

    No4:

    Activity.startActivity-->

    Activity.startActivityForResult-->

    Instrumentation.execStartActivity-->

    No5:

    简单成一句话,就是系统要知道被启动的Activtiy应该放在那个task

  • 相关阅读:
    [JSOI2008]Blue Mary开公司[李超线段树]
    线段树分治
    满汉全席[2-SAT]
    「一本通 3.5 练习 5」和平委员会
    2-SAT问题
    2019/04/06 BJ省选模拟DAY1
    构造题【随时更
    文本编辑器vim/vi——命令模式
    指令——cat
    指令——history
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8351864.html
Copyright © 2020-2023  润新知