2015年3月20日院校服务支持结果反馈及下周准备-备课烟职13级android_第1页
2015年3月20日院校服务支持结果反馈及下周准备-备课烟职13级android_第2页
2015年3月20日院校服务支持结果反馈及下周准备-备课烟职13级android_第3页
2015年3月20日院校服务支持结果反馈及下周准备-备课烟职13级android_第4页
2015年3月20日院校服务支持结果反馈及下周准备-备课烟职13级android_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

第一章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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论