-------------------------------------------------
2016/7/14
1. Activity的四种启动模式(可以在manifest中launchMode控制或者intent.addFlags)
a. 标准模式(默认): 调用startActivity即可产生一个新的实例
若我有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击,又会再新启一个在它之上……
点back键会依照栈顺序依次退出。
b. singleTop:如果已经有一个实例位于Activity栈顶部,就
不产生新的实例,而是调用该Activity的onNewInstance
如果不位于栈顶,则产生新的实例
c. singleTask:在新的task产生实例,以后每次调用就用这个实例
同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法
如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,
也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
singleTask会把task中在其之上的其它Activity destory掉。
d. singleInstance:在activity的task中产生新的实例
只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
Service
a. Service是在一段不定的时间运行在后台,不和用户交互应用组件。
b. 每个Service必须在manifest中 通过<service>来声明。可以通过contect.startservice和contect.bindserverice来启动。
c. Service和其他的应用组件一样,运行在进程的主线程中。这就是说如果service需要很多耗时或者阻塞的操作,需要在其子线程中实现。