Android基础系统组件(中级).pdf

上传人:韩长文 文档编号:3329611 上传时间:2019-08-13 格式:PDF 页数:27 大小:2.06MB
返回 下载 相关 举报
Android基础系统组件(中级).pdf_第1页
第1页 / 共27页
Android基础系统组件(中级).pdf_第2页
第2页 / 共27页
Android基础系统组件(中级).pdf_第3页
第3页 / 共27页
Android基础系统组件(中级).pdf_第4页
第4页 / 共27页
Android基础系统组件(中级).pdf_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Android基础系统组件(中级).pdf》由会员分享,可在线阅读,更多相关《Android基础系统组件(中级).pdf(27页珍藏版)》请在三一文库上搜索。

1、AndroidAndroid基础系统组件基础系统组件 Android平台手机应用开发技术培训 中级.第7讲 学习目标: 目标学员: 课程时长:45分钟 有Android开发基础的开发者或在校 计算机相关专业大学生 学习Android基本系统组件的使用方法。 掌握Acitivity,Service, BroadcastReceiver的高级使用技巧。 AndroidAndroid应用组件介绍应用组件介绍 Activity详解 Service的使用 BroadcastReceiver的使用 课程目录课程目录 应用组件介绍 Android应用程序没有单独的程序入口(例如:main()函数) Andr

2、oid拥有以下四种组件,以便系统能实例化并运行该应用 Activity,活动组件 Service,服务组件 BroadcastReceiver,广播接收组件 ContentProvider,内容提供组件 Android系统组件介绍 ActivityActivity详解详解 Service的使用 BroadcastReceiver的使用 课程目录课程目录 Activity的生命周期和状态 Activity拥有以下四种状态: Active,活动状态 Paused,暂停状态 Stopped,停止状态 Inactive,休眠状态 Activity的生命周期中有三个关 键的状态环: onCreate和o

3、nDestroy onStart和onStop onResume和onPause Activity堆栈的管理 所有正在运行的Activity在系统里由Activity堆栈所管理 Android会根据需要关闭堆栈底部的Activity,以保障充足的系统资源 所有正在运行的Actvity将遵循照后进先出的原则 当一个新的Activity启动,当前的Activity将移至堆栈的顶部 如果用户使用Back按钮,或在前台Activity被关闭,堆栈中的下一个 Activity将被激活并且移至到堆栈的顶部。 Activity与Task Android的Task是一组彼此联系的Activity的堆栈 Tas

4、k中的Activity可以分属于不同的应用 例如有的软件调用了Google map显示地图,这就是用到了其它应用的Activity Task所包含的所有Activity在系统中会被作为一个整体处理 比如:Task A被设置成foreground/background task的时候,整个task(activity stack)都会随之移动 Task和Affinity(亲和力) 默认情况下,同一应用中的activity相互之间有一种“亲和力” Affinity的示范 实现一个由多个Activity组成的应用 component 实现第二个应用component2,并且用 它调用component

5、中的组件 在使用 FLAG_ACTIVITY_NEW_TASK的情况 下,系统将自动产生一个新任务 component Android系统组件介绍 Activity详解 ServiceService的使用的使用 BroadcastReceiver的使用 课程目录课程目录 Service概述 服务是运行在后台的一段代码 它可以运行在它自己的进程,也可以运行在其他应用程序进程的上下 文(context)里面,这取决于自身的需要 其它的组件可以绑定到一个服 务(Service)上面,通过远程过程调 用(RPC)来调用这个方法 例如媒体播放器的服务, 当用户退出媒体选择用户界面,她仍然希 望音乐依然可

6、以继续播放,这时就是由服务 (service)来保证当用 户界面关闭时音乐继续播放的 Service的生命周期和使用方式 服务的完整生命周期始于 onCreate()终于onDestroy() 服务的活跃生命周期始于 onStart()但不存在onStop方法 服务有两种使用方式:它可以 启动并运行,直至有人停止了 它或它自己停止 也可以通过自定义接口进行操 作。客户端建立一个到服务的 连接,并通过连接来调用服务 RPC与远程调用Service 如果期望在不同进程(应用) 运行一个Service的时候,就需 要利用Android提供的RPC机制, 为其部署一套进程间通信的策 略 首先需要创建A

7、IDL接口 然后再Java文件中,实现该接 口需要在名为Stub的内部类中 完成接口的实现) 使用服务连接的模式来调用服 务。 Service示范 首先为之前的components项目创建一个TestService,并且实现onCreate, onStart,onDestroy,onBind,onRebind,onUnbind等方法 其它方法与onCreate方法类似,我们只是用Toast做示范 别忘了在AndroidManifest.xml中注册服务。 public void onCreate() super.onCreate(); Toast.makeText(TestService.th

8、is, getClass().getName() + “.onCreate()“, Toast.LENGTH_LONG).show(); “ Service示范 在MainActivity的布局中增加4个Button,并且为其添加startService, stopService, bindService, unbindService等四个事件 其中,bind的方式,需要使用到ServiceConnection(这里没有做任何操作) startService(intent); stopService(intent); bindService(intent, connection, BIND_A

9、UTO_CREATE); unbindService(connection); private ServiceConnection connection = new ServiceConnection() public void onServiceConnected(ComponentName arg0, IBinder arg1) public void onServiceDisconnected(ComponentName arg0) ; 远程调用Service示范 在之前Service示范的基础上,增加 ITestService.aidl接口 在TestService中实现该接口(ADT

10、会自动识别aidl 文件) package ponents; interface ITestService String getString(); private ITestService.Stub serviceBinder = new ITestService.Stub() public String getString() throws RemoteException return “this is from TestService.“; ; 远程调用Service示范 然后再修改TestService的onBind方法,返回刚才定义的接口 最后,需要修改MainActivity中的Se

11、rviceConnection,并在其 onServiceConnected方法中获取TestService的接口 public void onServiceConnected(ComponentName arg0, IBinder arg1) testService = (ITestService) arg1; try Toast.makeText(MainActivity.this,getClass().getName() + “.RPC.“ + testService.getString(), Toast.LENGTH_LONG).show(); catch (RemoteExcepti

12、on e) throw new RuntimeException(e); public IBinder onBind(Intent intent) return serviceBinder; Service示范 bindService与unbindService一般用于 “客户端”调用Service。它们与启动服务, 结束服务等方法不是同一概念。它们只 是“连接”到服务 bindService(使用 BIND_AUTO_CREATE 标记)可以自动 创建Service,并调用其 onCreate方法 使用远程调用的方式,让Service可以跨 进程被其它的程序使用 Android系统组件介绍

13、Activity的详解 Service的使用 BroadcastReceiverBroadcastReceiver的使用的使用 课程目录课程目录 Android中的Broadcast广播 在Android中,Broadcast(广播)是一种广泛运用的在应用程序之间 传输信息的机制 例如系统启动,时钟等,都会以广播的形式,公开传送其特定的信息 可以通过Intent发送广播 Intent intent1 = new Intent(AC1);/AC1为reciver的动作名称 sendBroadcast(intent1); 此处的AC1要定义: static final String AC1 = “

14、com.test.action.NEW_BC1“;/ BroadcastReceiver的介绍 BroadcastReceiver是对 Broadcast进行过滤接受并响应的一类组件 实现广播接收器需要继承BroadcastReceiver类,并且实现 onReceive方法 BroadcastReceiver是一种轻量级的机制,可以忽略其资源开销 实现方法 public class TestBroadcastReceiver extends BroadcastReceiver public void onReceive(Context context, Intent intent) Toas

15、t.makeText(context, getClass().getName() + “.onReceive()“,Toast.LENGTH_LONG).show(); 标准的广播事件 ACTION_TIME_TICK,时钟(每分钟触发一次广播) ACTION_TIME_CHANGED,改变时间 ACTION_TIMEZONE_CHANGED,改变时区 ACTION_BOOT_COMPLETED,系统启动完成 ACTION_PACKAGE_ADDED,一个新应用被安装 ACTION_PACKAGE_CHANGED,应用更新 ACTION_PACKAGE_REMOVED,应用被删除 ACTION

16、_PACKAGE_RESTARTED,应用重新启动 ACTION_PACKAGE_DATA_CLEARED,应用的数据被清空 ACTION_UID_REMOVED,一个用户ID从系统中被删除 ACTION_BATTERY_CHANGED,电池电量改变 ACTION_POWER_CONNECTED,连接电源 ACTION_POWER_DISCONNECTED,断开电源 ACTION_SHUTDOWN,关机 静态注册 在AndroidManifest.xml中用标签进行注册 静态注册的BroadcastReceiver可以方便的被其它的应用调用。同时 也可以作为系统广播的相应事件源 例如电量低时自

17、动关闭,系统启动时自动运行等 无需考虑静态注册的BroadcastReceiver是否需要销毁。该对象的实 例在onReceive调用之后就会在任意时间内被系统销毁 动态注册 动态注册,在代码中使用Context.registerReceiver() 注册,同时可以 使用Context.unregisterReceiver() 取消之前注册的 BraodcastReceiver private TestBroadcastReceiver tbr = new TestBroadcastReceiver(); private void setReceiver() IntentFilter ifr

18、= new IntentFilter(); ifr.addAction(“ponent.TestBroadcastReceiver“); registerReceiver(tbr, ifr); private void removeReceiver() unregisterReceiver(tbr); BroadcastReceiver示范 创建TestBroadcastReceiver并在其 onReceive方法中输出提示信息 在AndroidManifest.xml中注册 TestBroadcastReceiver,使其监听 android.intent.action.BOOT_COMPLET ED。 在MainActivity中用代码动态注册监听器, 使其监听我们自定义的广播事件 ponent.TestBroadcastR eceiver 最后为sendBroadcast按钮增加事件, 使其发送我们的自定义广播: ponent.TestBroadcastR eceiver 总结 Android中Activity的使用 Android中Service的机制 创建及使用Service的方法 BroadcastReceiver的作用及使用方法 本课程到此结束,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1