首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android: Activity、历程、BoradcastReceiver生命周期

2012-09-24 
Android: Activity、进程、BoradcastReceiver生命周期Android中Activity和进程的生命周期是一个很重要的问题

Android: Activity、进程、BoradcastReceiver生命周期
Android中Activity和进程的生命周期是一个很重要的问题。Android对进程也采取了垃圾回收之类的机制,这意味着即使用户退出了程序,该进程依然可能存在于系统中。这将直接影响我们写的程序结构。


一个进程可能有若干个Activity。Activity退出后,进程可能并没有结束。下次用户从桌面启动该Activity时,会直接使用没有结束的进程。所以,想直接在主Activity中做程序初始化之类的操作,则需要小心。(实际上,Activity没有主次之分,说它是“主”,主要是因为它接受ndroid.intent.action.MAIN action)


如下代码:

package com.kl.test;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.util.Log;/* * It will called even if the process has been terminated before. After it is called, * the process will remain as usual for sometime. */public class SmsReceiver extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {  Log.d(GlobalData.LOGTAG, "SmsReceiver onReceive.");  GlobalData.instance();  } }



就算进程不在,BroadcastReceiver也会被调用,并且创建对应的进程。但是,并不会创建任何Activity。




BTW,activity中的数据会由于activity被销毁而被销毁。activity onDestroy了就真的是被destory了,意味着其在内存中的消失。在UI中缓存UI界面数据的需要注意一下。


PS,优化后的程序在进程已经存在的情况下,效率明显提升。:D


1.16.2011 update
BroadcastReceiver被调用时,会首先初始化所在的进程(如果进程之前被关闭),也就是会执行Application:onCreate

热点排行