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

Activity与ActivityGroup生命周期有关问题

2012-08-29 
Activity与ActivityGroup生命周期问题为了查看Activity切换经历的生命周期,首先看下面代码:布局文件main.x

Activity与ActivityGroup生命周期问题
为了查看Activity切换经历的生命周期,首先看下面代码:
布局文件
main.xml文件


second.xml


MainActivity代码


listview.xml


MainActivity
public class SubActivity extends Activity{private String name;  @Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.listview); String[] str = this.getIntent().getStringArrayExtra("Strings");             int choiceMode = this.getIntent().getIntExtra("ChoiceMode",                     ListView.CHOICE_MODE_NONE);             ListView listView = (ListView) findViewById(R.id.MyListView);                  // 设置列表的式样             int itemID = android.R.layout.simple_list_item_1;             if (choiceMode == ListView.CHOICE_MODE_MULTIPLE)// 主Activity要求多选                 itemID = android.R.layout.simple_list_item_multiple_choice;             else if (choiceMode == ListView.CHOICE_MODE_SINGLE)// 主Activity要求单选                 itemID = android.R.layout.simple_list_item_single_choice;             ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,                     itemID, str);             listView.setAdapter(arrayAdapter);             listView.setChoiceMode(choiceMode);             Log.e(name, "SubActivity====================>onCreate");// 显示当前状态,onCreate与onDestroy对应     }@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.e(name, "SubActivity====================>onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.e(name, "SubActivity====================>onResume");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.e(name, "SubActivity====================>onPause");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.e(name, "SubActivity====================>onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.e(name, "SubActivity====================>onDestroy");}}


运行结果如下:
MainActivity====================>onCreate
MainActivity====================>onStart
MainActivity====================>onResume
点击TAB1,执行
  SubActivity====================>onCreate
  SubActivity====================>onStart
  SubActivity====================>onResume
切换到TAB2,执行
   SubActivity====================>onPause
  SubActivity====================>onStop
  SubActivity====================>onDestroy
  SubActivity====================>onCreate
  SubActivity====================>onStart
  SubActivity====================>onResume


一个更为复杂的场景如下:
   1.一个主界面MainActivity(继承ActivityGroup) 点击“呼叫”按钮
     进入到呼叫界面 Call(继承Activity,实现SurfaceHolder.Callback接口)
   2.如果用户长时间未接电话,自动挂断并返回到MainActivity界面

进入的生命周期函数依次为
   onCreate(Main)-->onStart(Main)->onResume(Main)-->onPause(Main)-->onCreate(Call)-->onStart(Call)-->onResume(Call)-->surfaceCreated(Call)-->surfaceChanged(Call)-->onStop(Main)

没有人接听,由消息事件触发:
onPause(Call)-->onDestroy(Main)-->onCreate(Main)-->onStart(Main)->onResume(Main)---->surfaceDestroyed(Call)-->onStop(Call)-->onDestroyed(Call)
  
 


热点排行