Android移动应用开发教程 课件 4.1、使用Activity_第1页
Android移动应用开发教程 课件 4.1、使用Activity_第2页
Android移动应用开发教程 课件 4.1、使用Activity_第3页
Android移动应用开发教程 课件 4.1、使用Activity_第4页
Android移动应用开发教程 课件 4.1、使用Activity_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用ActivityAndroid汇报人:XXX目录2345Activity属性IntentFilterActivity方法Activity的状态及生命61创建Activity案例实现01章节PART创建Activity添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字1)创建Activity。一般从包android.app中的Activity类继承,在不同的应用场景下,也可以继承Activity的子类,例如只想实现一个列表,则可以继承ListActivity类。2)重写Activity生命周期中的回调方法,一般都需要重写onCreate()方法,在其中做初始化工作,通常在此函数中调用setContentView()函数设置Activity的界面。其他回调方法视情况决定是否需要重写。Activity是用户唯一可以看得到的东西。几乎所有的Activity都与用户进行交互,所以Activity主要负责的就是创建显示窗口,窗口中的可视内容是由一系列视图构成的,这些视图均继承自View基类,每个视图控制着窗口中一块特定的矩形空间,父级视图包含并组织其子视图的布局,而底层视图则在它们控制的矩形中进行绘制,并对用户操作作出响应,所以视图是Activity与用户进行交互的界面。Activity中使用setContentView(View)来显示自己的UI视图。活动Activity创建Activity02章节PARTActivity属性添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字在AndroidManifest.xml配置文件中声明每个Activity,如果只是在内部使用时,不需要为Acitivity增加意图过滤器。同时设置各种属性Activity属性属性名说明android:allowTaskReparenting是否允许activity更换从属的任务,比如从短信息任务切换到浏览器任务android:alwaysRetainTaskState是否保留状态不变,

比如切换回home,再重新打开,activity处于最后的状态android:clearTaskOnLanunch比如P是activity,Q是被P触发的activity,然后返回Home,重新启动P,是否显示Qandroid:configChanges当配置list发生修改时,是否调用onConfigurationChanged()方法。android:enabledactivity是否可以被实例化android:excludeFromRecents是否可被显示在最近打开的activity列表里android:exported是否允许activity被其他程序调用android:finishOnTaskLaunch当用户重新启动这个任务的时候,是否关闭已打开的activityandroid.iconActivity的图标android:labelActivity的标签android:themeactivity的样式主题,如果没有设置,则activity的主题样式从属于应用程序android:windowSoftInputModeactivity主窗口与软键盘的交互模式android:multiprocess允许多进程android:nameactivity的类名,必须指定。值得特别注意的是<activityandroid:name=".ExampleActivity"/>属性设置,在类名前个”.”,表示当前所在包,不可遗漏,否则程序运行会抛出异常。Android:History当用户切换到其他屏幕时是否需要移除这个activity。android:permission权限设置android:process一

个activity运行时所在的进程名。默认所有程序组件运行在应用程序默认的进程中,这个进程名跟应用程序的包名一致。process属性能够为所有组件设定一个新的默认值。android:screenOrientationactivity显示的模式。Unspecified:

默认值,

landscape:风景画模式,宽度比高度大一些,portrait:肖像模式,高度比宽度大。user:用户的设置,“behind/sensor/nosensor”android:stateNotNeededactivity被销毁和成功重启时是否保存状态android:taskAffinityactivity的亲属关系,默认情况同一个应用程序下的activity有相同的关系03章节PARTIntentFilter添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字

IntentFilter(意图过滤器)描述了Activity愿意接收什么样的Intent对象,同时也告诉其他组件如何启动这个Activity。可以为一个<activity>元素指定多个过虑器,在配置Activity属性时通过<intent-filter>节进行设置;在Java代码中Android将其抽象为android.content.IntentFilter类。意图过滤器中包括<action>、<category>以及<data>元素。IntentFilter

<intent-filter>列表中的Action属性不能为空,否则所有的Intent都会因匹配失败而被阻塞。Action是一个用户定义的字符串,用于描述一个Android应用程序组件,一个IntentFilter中可以包含多个Action。动作名称可以是标准名称,代表系统的标准操作,也可以是自定义名称IntentFilterAction匹配<intent-filter>

<actionandroid:name="ent.action.MAIN"/>

<actionandroid:name="com.cqcet.exampleaction"/>……

</intent-filter>Intentintent=newIntent();

intent.setAction("com.cqcet.exampleaction

");

一个Intent可以通过URI携带外部数据给目标组件。在<intent-filter>节点中,通过<data/>节点匹配外部数据。mimeType属性指定携带外部数据的数据类型,scheme指定协议,host、port、path指定数据的位置、端口、和路径。一个<intent-filter>中可以包含多个<data>子元素,用于指定组件可以执行的数据,Intent对象和过滤器都可以用“*”通配符匹配子类型字段,如“text/*”,“audio/*”表示任何子类型,IntentFilterData数据匹配<intent-filter> <dataandroid:mimeType="video/mpeg" android:scheme="http"

表示采用http模式

android:host="com.example.android"

指定主机

android:path="folder/subfolder/1"

指定路径

android:port="8888"/>

端口号

<dataandroid:mimeType="audio/mpeg" android:scheme="http" android:host="com.example.android" android:path="folder/subfolder/2" android:port="8888"/> <dataandroid:mimeType="audio/mpeg" android:scheme="http" android:host="com.example.android" android:path="folder/subfolder/3" android:port="8888"/></intent-filter>

<intent-filter>节点中可以为组件定义一个或多个Category类别列表,当Intent中包含这个列表的某个类别时Category类别匹配才会成功。与Action一样,<intent-filter>列表中的Category属性也不能为空。Category属性的默认值“ent.category.DEFAULT”是启动非入口Activity的默认值,在添加其他Category属性值时,该值必须添加,也就是至少有这一条类别信息,否则也会匹配失败。IntentFilterCategory类别匹配

IntentFilter类是IntentFilter的另外一种实现,是Activity配置中IntentFilter配置节在Java代码中的编程表现形式IntentFilterIntentFilter类方法功能描述IntentFilter()IntentFilter类的构造方法,IntentFilter类提供了四种构造函数:IntentFilter()、IntentFilter(Stringaction)、IntentFilter(Stringaction,StringdataType)和IntentFilter(IntentFiltero)addAction(Stringaction)为IntentFilter添加匹配的行为例如添加电量低行为:addAction(ACTION_BATTERY_LOW)addCategory(Stringcategory)为IntentFilter添加匹配类别,如addCategory(CATEGORY_LAUNCHER)addDataAuthority(Stringhost,Stringport)获取IntentFilter的数据验证,如addDataAuthority(myhost,8888)。Host参数可以包含通配符*表示任意匹配,port为空表示可匹配任何端口countActions()计算IntentFilter包含的Action数量countDataAuthorities()计算IntentFilter包含的DataAuthority数量getDataAuthority(intindex)根据index获取IntentFilter的DataAuthoritygetAction(intindex)根据index获取IntentFilter的ActionsetPriority(intpriority)设置IntentFilter的优先级,默认优先级为0。通常priority值介于-1000到1000之间。Android系统根据优先级匹配IntentgetPriority()获取IntentFilter的优先级hasCategory(Stringcategory)判断category是否在Intent中,若包含返回ture,否则返回falsematchCategories(Set<String>categories)基于类别categories匹配IntentFilter,若匹配IntentFilter所有的类别则返回null,否则返回第一个不匹配的类别名字04章节PARTActivity方法添加相关标题文字添加相关标题文字添加相关标题文字添加相关标题文字Activity方法方法名称功能描述getPreferecnes()getSharedPreferences()得到SharedPreferences对象,使用XML文件存放数据,文件存放在/data/data/<packagename>/shared_prefs目录下getLayoutInflater()将布局文件实例化为View对象,实现动态加载布局getSystemService()获取指定的服务对象startActivity()startActivityForResult()启动一个ActivitystartService()/bindService()启动指定的服务sendBroadcast()/unregisterReceiver()发送广播/取消注册的广播接收者getContentResolver()得到一个ContentResolver对象getPackageManager()获取一个管理和查询系统所有应用程序的PackageManager对象方法名称功能描述getPackageManager()获取PackageManager实例,以查看全局package信息getContentResolver()获取应用程序包的ContentResolver实例getApplicationContext()返回当前进程的单实例全局Application对象的ContextgetPackageName()返回应用程序包名getSharedPreferences(Stringname,intmode)根据文件名获取SharedPreferencesstartActivity(Intentintent)启动一个新的activitystartActivityForResult(Intentintent,intrequestCode)启动一个可有返回值的activitysendBroadcast(Intentintent)广播一个intent给所有感兴趣的接收者,异步机制registerReceiver(BroadcastReceiverreceiver,Intentfilter)注册一个BroadcastReceiver,且它将在主activity线程中运行unregisterReceiver(BroadcastReceiverreceiver)注销注册的BroadcastReceiverstartService(Intentservice)请求启动一个applicationservicestopService(Intentservice)请求停止一个applicationservicebindService(Intentservice,ServiceConnectionconn,intflags)连接一个应用服务,它定义了application和service间的依赖关系unbindService(ServiceConnectionconn)断开一个应用服务,当服务重新开始时,将不再接收到调用,且服务允许随时停止getSystemService(Stringname)获取指定的服务05章节PARTActivity的状态及生命周期系统通过一个Activity栈来管理所有的Activity,当一个新的Activity启动时,它首先会被放置在Activity栈顶部并成为running状态,之前的Activity也在Activity栈中,但总是被保存在它的下边,只有当这个新的Activity退出以后,之前的Activity才能重新回到栈顶并成为前台界面。Activity的状态及生命周期Activity本质上有四种状态:Running状态:Activity在屏幕的前台中(Activity栈的顶端),它处于可见并可与用户交互的激活状态。Paused状态:Activity失去了焦点但是仍然可见(这个Activity顶上遮挡了一个透明的或者非全屏的Activity)。一个Paused状态的Activity完全是活动的(它维护自己所有的状态和成员信息,而且仍然在窗口管理器的管理中),但是不能与用户交互,但当系统内存极度匮乏时也会被系统kill而变成Killed状态。Stopped状态:Activity由于其他的Activity处于活动状态而完全变暗并且不可见,那么它就进入了Stopped状态。它仍然保持着所有的状态和成员的信息,可是它对于用户来说不可见,当别的地方需要内存的时候它经常会被kill。当Activity处于Stopped状态时,一定要保存当前数据和当前的UI状态,否则一旦Activity退出或关闭时,当前的数据和UI状态就丢失了。Killed状态:Activity被启动以前,或者Activity是Paused状态或者Stopped状态时,系统需要将其清理出内存时命令其finish或者简单kill其进程,此时Activity进入Killed状态,Activity已从Activity栈中被移除并且不可见。当它重新在用户面前显示的时候,它必须被完全重新启动。在Activity的整个生命周期中,有如下的三个嵌套的生命周期循环。

前台生命周期:从Activity调用onResume()开始,到调用对应的onPause()为止;

可视生命周期:从Activity调用onStart()开始,到调用对应的onStop()为止。

完整生命周期:从最初调用onCreate()到最终调用onDestroy()为止。Activity的状态及生命周期方法描述完成后可杀掉?下一个onCreate()当Activity被创建时调用。一般做初始化操作,比如创建界面,把数据绑定到列表等等。这个方法会被传入一个Bundle对象否onStart()onRestart()在停止后重新开始前调用,也就是在再次调用onStart()之前立即调用否onStart()onStart()当Activity变成可见后立即调用。如果Activity成为最上层,则调用onResume(),如果完全被摭盖,就调用onStop()否onResume()或onStop()onResume()当Activity处于最上层时,立即调用此方法。此时Activity获得输入焦点。后面跟着onPause()否onPause()onPause()当Activity要进入Paused状态时调用此方法。当它又回到最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论