安卓入门--四大组件--Service高级用法
2016-09-09 17:01
323 查看
前台服务:
后台服务优先级比较低,可能会被回收。所以有前台服务,既显示在状态栏的服务。只要修改Service的onCreate方法即可:
@Override public void onCreate() { super.onCreate(); Intent notificationIntent=new Intent(this,MainActivity.class); PendingIntent pendingIntent= PendingIntent.getActivity(this,0,notificationIntent,0); Notification.Builder builder = new Notification.Builder(this); Notification notification=builder.setContentIntent(pendingIntent) .setSmallIcon(R.mipmap.ic_launcher) .setWhen(System.currentTimeMillis()).setAutoCancel(false) .setContentTitle("statusContentTitle").setContentText("statusContentContext").build(); startForeground(1,notification); Log.d("Service","onCreate Service"); }
其实就是创建通知的形式,不过这里使用
startForeground(1,notification);来显示的。
测试:
使用IntentService
service里面可以开启子线程,并调用stopService停止服务。但是这种方法如果忘记关闭线程会堵塞主线程。
使用IntentService就能解决问题:
IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类推。
而且,所有请求都在一个单线程中,不会阻塞应用程序的主线程(UI Thread),同一时间只处理一个请求。
也就是说,IntentService自己就是一个子线程,和主线程不在同一线程下运行。
使用方法,和Service雷同,只是继承IntentService。
相关文章推荐
- 安卓入门--四大组件--Service基本用法
- 【Android基础入门〖4〗】四大组件之Service
- 7、四大组件之二-Service高级
- 安卓四大组件之Service
- Android四大组件——Service入门
- Android入门--四大组件Service(3)
- 【Android基础入门〖4〗】四大组件之Service
- 安卓四大组件之Service
- 安卓四大组件之service
- 安卓四大组件之一service
- 安卓四大组件之service服务
- 【XFeng安卓开发笔记】四大基本组件——跨应用启动service
- 安卓四大组件之--service
- 安卓四大组件的作用、安卓Service的作用
- 安卓四大组件之二#1-Service的创建,生命周期以及动态调用Service里的方法 推荐
- 【Android开发日记】之入门篇(五)——Android四大组件之Service
- 0909Android基础安卓四大组件之Service
- 安卓四大组件以及用法
- 安卓四大组件之三Service
- Android四大组件之服务Service的用法