




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Android服务
教学目标理解使用Service(服务)的时机。掌握服务Service(服务)的生命周期(Lifecycle)掌握创建和控制服务Service(服务)工作任务使用Eclipse和ADT编写一个简单的Service获取当前地理信息使用Activity与Service进行通信,定期的获取地理信息数据Android中的ServiceAndroid系统中有四个主要的组成部件,分别是Activity、ContentProvider、BroadcastReceiver和Service。AndroidService服务的最主要特点在于在后台工作不直接跟用户直接交互,为应用程序提供数据和运算。Service的功能1.完成后台数据的准备和运算,完成周期性的更新操作,2.完成进程间的通信Service的用处应用程序在不需要用户进行输入干预的情况下,处理大量的耗时和占用资源的任务。应用程序有规律的完成特定的功能,比如天气预报应用每隔一小时进行一次网络连接来更新天气情况。应用程序在后台向前台的应用提供数据,例如在后台的天气预报服务获取到天气更新后把数据保存起来,等待前台数据来获取。Service(服务)的生命周期创建Service(服务)自定义一个类继承自android.app.Service类在配置文件中注册<serviceandroid:name=”.SimpleService”></service>publicclassSimpleServiceextendsService{@Override publicIBinderonBind(Intentarg0){ returnnull; } @Override publicvoidonCreate(){ } @Override
publicvoidonStart(Intentintent,intstartId){}
@Override publicvoidonDestroy(){ }}调用服务-----第一种方式第一种方式:使用startService调用服务这种方式启动会执行服务的onCreate()和onStart()方法startService(newIntent(SimpleServiceActivity.this,SimpleService.class));调用服务-----第二种方式bindService调用服务除了以上的调用外,还必须在客户端添加如下代码:bindService(newIntent(LocalServiceBinding.this,LocalService.class),mConnection,Context.BIND_AUTO_CREATE);
privateServiceConnectionmConnection=newServiceConnection(){publicvoidonServiceConnected(ComponentNameclassName,IBinderservice){ mBoundService=((LocalService.LocalBinder)service).getService();}publicvoidonServiceDisconnected(ComponentNameclassName){ mBoundService=null;}};编写一个简单的Service获取当前地理信息服务的实现设置定位器privateStringsetLocationProvierCriteria(){ CriterialocationProvicerCriteria=newCriteria(); locationProvicerCriteria.setCostAllowed(false); locationProvicerCriteria.setAccuracy(Criteria.ACCURACY_FINE); locationProvicerCriteria.setAltitudeRequired(true); locationProvicerCriteria.setBearingRequired(true); locationProvicerCriteria.setPowerRequirement(Criteria.NO_REQUIREMENT); locationProvicerCriteria.setSpeedRequired(true); StringbestProvider=mLocationManager.getBestProvider( locationProvicerCriteria,true); returnbestProvider;};服务的实现显示通知消息privatevoidshowNotification(){ mNotification=newNotification( android.R.drawable.ic_notification_overlay, "LocationServiceCreated.",System.currentTimeMillis()); PendingIntentpendingIntent=PendingIntent.getActivity( getApplicationContext(),REQUEST_CODE,newIntent( getApplicationContext(),MainActivity.class), PendingIntent.FLAG_ONE_SHOT); mNotification.defaults=Notification.DEFAULT_ALL; mNotification.setLatestEventInfo(getApplicationContext(), "LocationService","TheLocationServiceStarted.", pendingIntent); mNotificationManager.notify(NOTIFICATION_ID,mNotification);}服务的实现获取定位信息privatevoidgetLatestLocation(){ Locationlocation=mLocationManager.getLastKnownLocation(mBestProvider); Log.d("LocationService","Location:"+location); if(location!=null){ mLatitude=location.getLatitude()*1E6; mLongitude=location.getLongitude()*1E6; }}服务的实现获取经纬度定义LocalBinderpublicclassLocalBinderextendsBinder{ publicLocationServicegetService(){ returnLocationService.this; }}publicdoublegetLatitude(){ returnmLatitude;}publicdoublegetLongitude(){ returnmLongitude;}服务的实现服务的onCreate方法@Override publicvoidonCreate(){ super.onCreate(); mNotificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);mLocationManager=(LocationManager)getSystemService(LOCATION_SERVICE); mBestProvider=setLocationProvierCriteria(); showNotification(); }服务的实现@OverridepublicvoidonStart(Intentintent,intstartId){ super.onStart(intent,startId); getLatestLocation();Toast.makeText(getApplicationContext(),"LocationServiceStarted.",Toast.LENGTH_LONG).show(); }@Override publicvoidonDestroy(){ super.onDestroy(); mNotificationManager.cancel(NOTIFICATION_ID); }服务的实现@Override publicvoidonDestroy(){ super.onDestroy(); mNotificationManager.cancel(NOTIFICATION_ID); }配置文件的设置添加权限声明Service
<uses-permissionandroid:name=“android.permission.ACCESS_COARSE_LOCATION”/><uses-permissionandroid:name="android.permission.ACCESS_FINE_LOCATION“/><uses-permissionandroid:name="android.permission.VIBRATE"></uses-permission><serviceandroid:name=".LocationService"></service>使用Activity获取地理信息数据在客户端添加如下代码:
privateLocationServicemLocationService;privateServiceConnectionmServiceConnection=newServiceConnection(){ @Override publicvoidonServiceDisconnected(ComponentNamename){ mLocationService=null; Toast.makeText(MainActivity.this,“Servicedisconnected.”, Toast.LENGTH_SHORT).show(); } @OverridepublicvoidonServiceConnected(ComponentNamename,IBinderservice){mLocationService=((LocationService.LocalBinder)service).getService();Toast.makeText(MainActivity.this,"Serviceconnected.",Toast.LENGTH_SHORT).show();}};使用Activity获取地理信息数据Bind方式启动服务bindBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ bindService( newIntent(MainActivity.this,LocationService.class), mServiceConnection,Context.BIND_AUTO_CREATE); }});使用Activity获取地理信息数据获取经纬度信息getInfoBtn.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(mLocationService!=null){ StringBuffersb=newStringBuffer(); sb.append("Latitude:"+mLocation
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生自我管理能力对学习动机的影响
- 医疗培训中激发学习动力的方法论
- 创新教育模式以教育心理学为基础的课程设计
- 创新教育政策塑造未来人才的关键
- 从神经科学的角度探讨提升学生参与度的方法
- 潜能激发教育心理学的实践路径
- 抖音商户直播前预热活动规划制度
- 22-富深木工胶!一文带你看懂手工贴木皮开裂原因及解决办法
- 公交优先政策与城市交通拥堵治理:2025年交通拥堵治理技术装备发展报告
- 江西中医药大学《细胞生物学与医学遗传学》2023-2024学年第一学期期末试卷
- 2023年本科招生考试
- 碳捕集、利用与封存技术课件
- 碳达峰和“碳中和”环境知识科普宣传PPT教学课件
- 中文版b4a新手指南-第14-15章语言画图
- 新入职护士培训考试试题及答案
- 《消防安全技术实务》课本完整版
- 公路工程标准施工监理招标文件(2018年版)
- 北师大版七年级数学下册 与信息技术相融合的数学教学案例 教案
- 钝针穿刺法临床应用护理
- 精品中文版b4a新手指南第4章开发环境
- 光缆线路的故障分析及障碍抢修
评论
0/150
提交评论