zoukankan      html  css  js  c++  java
  • 启动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

  • 相关阅读:
    [hdu 2089] 不要62 数位dp|dfs 入门
    [poj 2456] Aggressive cows 二分
    NOIP 2016 DAY 1 爆炸记
    【模板】kmp
    【模板】LCA
    NOIP 之前的吐槽
    【模板】树状数组
    【模板】线段树
    【模板】高精度
    2016/11/15
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8351864.html
Copyright © 2011-2022 走看看