Context是什么?

*汉语意思:上下文 不同的环境,上下文的效果不同

Activity的四种状态

  • Runing 状态:
    一个新的Activity启动入栈后,它在屏幕的最前端 ,它的屏幕最前端,此时他处理可见并
    和用户交互的激活状态
  • Paused状态
    当Activity被另一个透明或者dialog样式的Activity覆盖时的状态,此时他依然
    和窗口管理器保持连接 ,系统继续维护其内部状态,所以他依然可见,但它已经失去焦点,故不恶意与用户交互
  • Stoped状态:
    当Activity不可见时,Activity处理Stoped状态。Activity将继续保留在内存中保持当前
    所有用户的成员信息,假设系统别的地方需要内在的话,这是他被回收对象的主要候选。
  • Killed状态
    Activity被杀掉以后或者启动以前,处理Killed状态这是Activity已经从对账中移除,需要重新启动才可以显示和使用。

Runing和P爱used是可见的,Stoped和Killed是不可见的:

Activity的生命周期

  • onstart()开始:可见状态
    onResume(),正在与用户交互
    onPause()当窗口离开焦点:不与用户交互
    时调用
    onstop()不可见时
    onDestory()消亡时调用
    有几个活动窗口!
    命令窗口 adb shell dumpsys activity;
    singleTop activity可复用;提高效率
    standerd 标准模式 :多次创建Activity
    singleTask 当发生事件时,把自己置为栈顶,结束其他的activity;

Activity有四种加载模式:

standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别:

  • standard:Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为:
    A B C D D 。此时如果栈顶的D通过Intent跳转到B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。
  • singleTop:如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候,再通过Intent跳转到本身这
    个Activity,则将不会创建一个新的实例压入栈中。例如:现在栈的情况为:A B C D。D的Launch mode设置成了singleTop,那么在D中启动Intent跳转到D,那么将不会新创建一个D的实例压入栈中,此时栈的情况依然为:A B C D。但是如果此时B的模式也是
    singleTop,D跳转到B,那么则会新建一个B的实例压入栈中,因为此时B不是位于栈顶,此时栈的情况就变成了:A B C D B。
  • singleTask:如果某个Activity是singleTask模式,那么Task栈中将会只有一个该Activity的实例。例如:现在栈的情况为:
    A B C D。B的Launch mode为singleTask,此时D通过Intent跳转到B,则栈的情况变成了:AB。而C和D被弹出销毁了,也就是说位于B之上的实例都被销毁了。
  • singleInstance:将Activity压入一个新建的任务栈中。例如:Task栈1的情况为:A B C。C通过Intent跳转到D,而D的Launchmodle为singleInstance,则将会新建一个Task栈2。此时Task栈1的情况还是为:A B C。Task栈2的情况为:D。此时屏幕界面显示D的内容,如果这时D又通过Intent跳转到D,则Task栈2中也不会新建一个D的实例,所以两个栈的情况也不会变化。而如果D跳转到C,则栈1的
    情况变成了:A B C C,因为C的Launch mode为standard,