深入理解activity与fragment

上传人:n**** 文档编号:89881923 上传时间:2019-06-03 格式:PPT 页数:72 大小:1.38MB
返回 下载 相关 举报
深入理解activity与fragment_第1页
第1页 / 共72页
深入理解activity与fragment_第2页
第2页 / 共72页
深入理解activity与fragment_第3页
第3页 / 共72页
深入理解activity与fragment_第4页
第4页 / 共72页
深入理解activity与fragment_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《深入理解activity与fragment》由会员分享,可在线阅读,更多相关《深入理解activity与fragment(72页珍藏版)》请在金锄头文库上搜索。

1、Android 手机开发,第4章 深入理解Activity与Fragment,理解Activity的功能与作用 在AndroidManifest中配置Activity 特殊Activity的功能与用法 在程序中启动与关闭Activity 使用Bundle在不同Activity之间交换数据 Activity的回调机制 Activity的生命周期 Fragment详解,Android提供的Activity类,Context,ContextWrapper,ContextThemeWrapper,Activity,AccountAuthenticatorActivity,ActivityGroup,L

2、istActivity,AliasActivity,ExpandableListActivity,TabActivity,LauncherActivity,PreferenceActivity,4.1.1 特殊Activity,LauncherActivity ArrayAdapter Intent intentForPosition(int) PreferenceActivity 保存应用程序中简单数据 配置preference.xml addPreferenceFromResource() ExpandableListActivity,LauncherActivity LauncherAc

3、tivity的作用是是开发一个列表界面Activity,但是这个列表界面与普通的列表界面有所不同。它开发出来的列表界面中的每个列表项都对应于一个Intent,通过重写Intent intentForPosition(int position)方法根据不同列表返回不同的intent。当我们点击不同列表项时,应用程序会自动启动对应的Acitviy。,PreferenceActivity PreferenceActivity是一个非常有用的基类,当开发的Android应用程序需要进行选项设置并希望这些选项设置以参数的形式保存时,我们可以通过PreferenceActivity实现。Preferenc

4、eActivity与普通的Acitvity不同,它不再使用普通的界面布局文件,而是使用选项设置的布局文件。 选项设置的布局文件:以PreferenceScreen作为根元素,它表明定义一个参数设置的界面布局。 另外,一旦Activity继承了PreferenceActivity,那么该Activity完全不需要自己控制Preferences的读写,PreferenceActivity会为我们处理这一切。,PreferenceActivity重要方法 public void loadHeadersFromResource (int resid, List target) 功能:解析resid所代

5、表的布局资源文件,根据元素为一标头(列表项)添加到目标列表list中。 public void onBuildHeaders (List target) 功能:负责加载页面布局文件到Activity,通过该方法添加加载至少一项标头到Activity列表中,并使acitvity运行在其fragment模式。其中,List为一个列表集合用来存放布局文件中的标头,调用 loadHeadersFromResource(R.layout.*, List)方法将布局资源添加到列表list数据集中。,4.1.2 配置Activity,Android程序中每个Activity都要在AndroidManifes

6、t.xml文件中进行配置 ,Datadata,4.1.3 启动、关闭Activity,startActivity(Intent) startActivityForResult(Intent, int) finish() finishActivity(int) 例 StartActivity 最后总结: 通过Itent返回 自己到OnStop结束 对方从OnCreate开始 通过finish返回 自己到OnDestroy结束 对方从OnRestart开始,4.1.4 使用Bundle在Activity之间交换数据,在Android中,两个Acitivity之间是靠Intent传递信息的,因为In

7、tent本来就起到信使的作用,所以用它来传递数据也显得顺理成章了。Intent 提供了多个方法来“携带“额外的数据 putExtras(Bundle data): 向Intent中放入需要“携带“的数据 putXxx(String key,Xxx date):向Bundle放入Int,Long等各种类型的数据(Xxx指代各种数据类型的名称) putSerializable(String key,Serializable date):向Bundle中放入一个可序列化的对象. 当然Intent也提供了相应的取出“携带“数据的方法 getXxx(String key):从Bundle取出Int,Lo

8、ng 等各种数据类型的数据. getSerializable(String Key,Serializable data): 从Bundle取出一个可序列化的对象。例 BoudleTest,4.1.5 启动其它Activity并返回结果,启动其他Activity的一种常用方式就是StartActivity(),但有时候我们期望获取指定Activity返回的结果。这时,就需要使用startActivityForResult()方法,为了获取被启动的 Activity所返回的结果,需要从两方面着手 当前Activity需要重写onActivityResult(int requestCode,int

9、resultCode,Intent intent),其中requestCode代表请求码,resultCode代表返回的结果码,它们都是开发者根据业务自行设定的。这样就可以通过请求码和结果码来判断请求是由谁发出的,结果是由谁返回的。 被启动的Activity需要调用setResult()方法处理结果。,startActivityForResult与startActivity的不同之处在于: 1、startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。 2、startActivityForResult( ) 可以一次性完成这项

10、任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个T2Activity,而当这个T2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。,相关函数: startActivityForResult(Intent intent, Int requestCode) setResut(int resultCode, Intent intent) onActivityResult(int requestCode, int resultCode, Intent inten

11、t) Android activity的setResult()在什么时候调用? 如果在startActivityForResult起来的Activity里面设置setResult,结果并不会马上返回给parent的Activity,只有当前Activity被finish,结果才会被发送给parent的onActivityResult去处理! 例 ActivityForResult,4.2 Activity的回调机制,当Activity被部署在Android应用中之后,随着应用程序的运行,Activity会不断的在不同的状态间切换,该Activity中特定的方法就会被回调-开发者可以有选择性的重

12、写这些方法来加入业务相关的处理。 在Activity中定义了很多生命周期的不同状态要调用的方法,这些方法都是空实现,系统框架要调用,用户也要调用来实现。,4.3 Activity 生命周期,在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。 活动状态: 该Activity位于前台,用户可见状态,可以获得焦点。 暂停状态: 其它Activity位于前台,该Activity依然可见,只是不能获得焦点 停止状态:该Activity不

13、可见,失去焦点 销毁状态: 该Activity结束,或Activity所在的进程被结束,4.3 Activity 生期命周期(7个方法),onCreate(Bundle): 创建Activity时被回调。该方法只会被调用一次。 onStart() : 启动Activity时被回调 onRestart():重新启动Activity被回调 onResume():恢复Activity时被回调。在onStart() 方法后一定会回调onResume()方法。 onPause(): 暂停Activity时被回调。 onStop(): 停止Activity时被回调。 onDestroy(): 销毁Acti

14、vity时被回调。该方法只会被调用一次。 例 Lifecycle,熟悉javaEE的朋友们都了解servlet技术,我们想要实现一个自己的servlet,需要继承相应的基类,重写它的方法,这些方法会在合适的时间被servlet容器调用。其实Android中的Activity运行机制跟servlet有些相似之处,Android系统相当于servlet容器,Activity相当于一个servlet,我们的Activity处在这个容器中,一切创建实例、初始化、销毁实例等过程都是容器来调用的,这也就是所谓的“Dont call me, Ill call you.”机制。,在上图中,Activity有三

15、个关键的循环:,整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。Activity在onCreate()设置所有的“全局”状态,在onDestory()释放所有的资源。例如:某个Activity有一个在后台运行的线程,用于从网络下载数据,则该Activity可以在onCreate()中创建线程,在onDestory()中停止线程。 可见的生命周期,从onStart()开始到onStop()结束。在这段时间,可以看到Activity在屏幕上,尽管有可能不在前台,不能和用户交互。在这两个接口之间,需要保持显示给用户的UI数据和资源等,onStart(),onSto

16、p()都可以被多次调用,因为Activity随时可以在可见和隐藏之间转换。 前台的生命周期,从onResume()开始到onPause()结束。在这段时间里,该Activity处于所有 Activity的最前面,和用户进行交互。Activity可以经常性地在resumed和paused状态之间切换。,1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。 2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。 3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。 4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。,5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResum

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号