页面跳转的数据传递
1.自动跳转
Handler的postDelayed(Runnable, long)方法
Context上下文,intent(Context, Class)
2.如何传递数据
页面1,用Intent对象的putExtra(key, value)方法传出数据
页面2,用getIntent()方法来获得Intent对象,并用该对象的getStringExtra(key)方法来接收数据
3.如何传递对象
需要使该对象实现序列化,即对被传递的类实现Serializable接口
页面1,用putExtra(key, value)方法来传出数据,value为对象
页面2,用getSerializableExtra(key)来接收数据
4.如何回传数据
页面1,startActivity(Intent)换成startActivityForResult(Intent, int),int是requestcode。
页面2,setResult(int, Intent),int是resultcode,Intent不跳转,只携带数据(即,使用new Intent()构造方法,使用putExtra())。关闭自己finished(),即回到刚才页面。
页面1,重载onActivityResult方法,接收requestcode、resultcode和Intent中的回传数据,即在该方法中用Intent对象的getStringExtra(key)来接收数据。Log.i()方法的使用。
5.Activity的生命周期
1) onCreate()
2) onStart()
3) onResume()
4) onPause()
5) onStop() 放在后台
6) onDestroy() 返回
7) onRestart()
焦点生命周期,失去焦点,但始终可见
可视生命周期,页面失去焦点,不可见
整体生命周期,
创建:onCreate->onStart->onResume
放在后台或者跳转到其他页面:onPause->onStop,再打开:onRestart->onStart->onResume
返回键:onPause->onStop->onDestroy
6.例子
最后用一个实际的例子来说明Activity的各个生命周期。假设有一个程序由2个Activity A和B组成,A是这个程序的启动界面。
1)当用户启动程序时,Process和默认的Task分别被创建,接着A被压入到当前的Task中,依次执行了 onCreate, onStart, onResume事件被呈现给了用户;
2)此时用户选择A中的某个功能开启界面B,界面B被压入当前Task遮盖住了A,A的onPause事件执行,B的 onCreate, onStart, onResume事件执行,呈现了界面B给用户;
3)用户在界面B操作完成后,使用Back键回到界面A,界面B不再可见,界面B的onPause, onStop, onDestroy执行,A的onResume事件被执行,呈现界面A给用户。
4)此时突然来电,界面A的onPause事件被执行,电话接听界面被呈现给用户,用户接听完电话后,又按了Home键回到桌面,打开另一个程序“联系人”,添加了联系人信息又做了一些其他的操作,此时界面A不再可见,其 onStop事件被执行,但并没有被销毁。
5)此后用户重新从菜单中点击了我们的程序,由于A和其所在的进程和Task并没有被销毁,A的onRestart 和onStart事件被执行,接着A的onResume事件被执行,A又被呈现给了用户。
6)用户这次使用完后,按Back键返回到桌面,A的 onPause, onStop被执行,随后A的onDestroy被执行,由于当前Task中已经没有任何Activity,A所在的Process的重要程度被降到很低,很快A所在的Process被系统结束。
快捷键
快速提取常量:command option c
运行:command r
command n