Android Service简介(系列1)
2018-01-04 00:00
316 查看
Android Service简介(系列1)
Android Service是Android重要的组件,在开发中会有用到和涉及。本文先给出一个最简单的Android Service例子。
(第1步)写一个类继承自Service,假设这个类的名字叫做MyAppService.java,重点是完成两个方法:
Service的onCreate和onStartCommand方法。
onCreate仅仅在Service第一次被startService时候初始化操作一次,随后不管再怎么startService,都不会再onCreate了。
耗时的、后台的、不需要用户交互的操作放在onStartCommand里面处理。需要强调一点,Android的Service并不是一个单独的进程、线程空间,是和Android主线程共享进程空间,这就意味,不要在onStartCommand方法里面阻塞主线程,否则将造成ANR!如果在onStartCommand里面有耗时操作,那么务必将onStartCommand里面的耗时操作代码块放到线程里面做。(注意!次说仅仅针对Service,IntentService和Service机制不同,不存在此问题,但有其自身特点,后面文章再说。)
Service的onDestroy只会被调用一次,那就是Service被stopService或者stopSelf时候。
完整的MyAppService.java代码:
(第2步)在AndroidManifest.xml定义第1步写的Service,在本例中是MyAppService,如代码:
(第3步)接下来就可以在自己的activity中通过startService和stopService启动、停止Service了,如代码所示:
Android Service简介(系列1)
Android Service是Android重要的组件,在开发中会有用到和涉及。本文先给出一个最简单的Android Service例子。
(第1步)写一个类继承自Service,假设这个类的名字叫做MyAppService.java,重点是完成两个方法:
Service的onCreate和onStartCommand方法。
onCreate仅仅在Service第一次被startService时候初始化操作一次,随后不管再怎么startService,都不会再onCreate了。
耗时的、后台的、不需要用户交互的操作放在onStartCommand里面处理。需要强调一点,Android的Service并不是一个单独的进程、线程空间,是和Android主线程共享进程空间,这就意味,不要在onStartCommand方法里面阻塞主线程,否则将造成ANR!如果在onStartCommand里面有耗时操作,那么务必将onStartCommand里面的耗时操作代码块放到线程里面做。(注意!次说仅仅针对Service,IntentService和Service机制不同,不存在此问题,但有其自身特点,后面文章再说。)
Service的onDestroy只会被调用一次,那就是Service被stopService或者stopSelf时候。
完整的MyAppService.java代码:
package zhangphil.service; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class MyAppService extends Service { // 仅仅create一次 @Override public void onCreate() { Log.d(this.getClass().getName(), "onCreate"); } // 在这里处理耗时、后台、无需用户交互的‘重口味’操作。 @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(this.getClass().getName(), "hello,service!"); return super.onStartCommand(intent, flags, startId); } @Override public IBinder onBind(Intent intent) { return null; } @Override public void onDestroy() { Log.d(this.getClass().getName(), "onDestroy"); } }
(第2步)在AndroidManifest.xml定义第1步写的Service,在本例中是MyAppService,如代码:
<application ... <service android:name="zhangphil.service.MyAppService" /> ... </application>
(第3步)接下来就可以在自己的activity中通过startService和stopService启动、停止Service了,如代码所示:
Intent intent=new Intent(activity,MyAppService.class); activity.startService(intent); ... Intent intent=new Intent(activity,MyAppService.class); activity.stopService(intent);
相关文章推荐
- Android Service简介(系列1)
- Android:Service简介(系列1)
- Android Service简介(系列1)
- Android 技术专题Feature系列第一篇 四大组件之Service
- Android四大组件之Service(观第一行代码2随记)一.服务简介
- Android总结篇系列:Android Service
- Android总结篇系列:Android Service
- Android Service进程间双向通信之Messenger(系列4)
- Android总结篇系列:Android Service
- Android深入浅出系列之服务机制—1.Android中的Service
- Android开发学习笔记:Service的简介和启动方式
- android四大组件--Service简介
- Android总结篇系列:Android Service
- Android之旅七 Service简介
- Android官方开发文档Training系列课程中文版:后台服务之响应IntentService的处理结果
- Android Service之串行化Service:IntentService(系列3)
- android service简介
- Android Activity与Service数据交互:Binder、bindService(系列2)
- 【Android Native Code开发系列】六 一个Native Service的完整示例