【Android学习系列】Android- Service总结
2012-09-15 12:30
344 查看
同事问起Service的相关概念,也觉的自己有点模模糊糊,本身并有在项目中实际用到过,于是写个小Demo,对这个Service进行下小小的总结,以免总是忘记。
【基础】
android中服务是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。
服务一般分为两种:
1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
提供给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。
context.startService() ->onCreate()- >onStart()->Service running--调用context.stopService() ->onDestroy()
context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()
参考文章:http://www.cnblogs.com/zhangdongzi/archive/2012/01/08/2316711.html
【笔者注】其实所谓的远程和进程,只是按照service的不同应用场景来分的,并没有这种概念。而其创建的两种方式,倒是有其一定的特殊性。
【例子程序】
1. 最简单的例子程序:两个button,分别启动和停止service。
UI的布局就不贴了,放上两个button就行。
先看service类。
程序中,onBind方法,是为了回调的需要,比如UI层想要call service中的一些方法时,就可以通过它来传递相关的信息(有待验证)。
1. 这里有点奇怪,service生命周期中的onStart是什么时候调用呢?
2. 出现个error: 09-15 04:16:50.816: E/Trace(779): error opening trace file: No such file or directory 不影响程序运行。
启动和结束service的code:
还有另外一种方式:
【基础】
android中服务是运行在后台的东西,级别与activity差不多。既然说service是运行在后台的服务,那么它就是不可见的,没有界面的东西。你可以启动一个服务Service来播放音乐,或者记录你地理信息位置的改变,或者启动一个服务来运行并一直监听某种动作。
服务一般分为两种:
1:本地服务, Local Service 用于应用程序内部。在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf() 或 Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。
2:远程服务, Remote Service 用于android系统内部的应用程序之间。可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用 Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。
提供给可被其他应用复用,比如定义一个天气预报服务,提供与其他应用调用即可。
context.startService() ->onCreate()- >onStart()->Service running--调用context.stopService() ->onDestroy()
context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()
参考文章:http://www.cnblogs.com/zhangdongzi/archive/2012/01/08/2316711.html
【笔者注】其实所谓的远程和进程,只是按照service的不同应用场景来分的,并没有这种概念。而其创建的两种方式,倒是有其一定的特殊性。
【例子程序】
1. 最简单的例子程序:两个button,分别启动和停止service。
UI的布局就不贴了,放上两个button就行。
先看service类。
public class LocalService extends Service { private static String TAG = "LocalService"; @Override public IBinder onBind(Intent intent) { // 为了回调的需要,暂时保留 return null; } public void onCreate() { Log.i(TAG, "onCreate"); super.onCreate(); } @Override public void onStart(Intent intent, int startId) { Log.i(TAG, "onStart"); super.onStart(intent, startId); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand"); return START_STICKY; } @Override public void onDestroy() { Log.i(TAG, "onDestroy"); super.onDestroy(); } }
程序中,onBind方法,是为了回调的需要,比如UI层想要call service中的一些方法时,就可以通过它来传递相关的信息(有待验证)。
1. 这里有点奇怪,service生命周期中的onStart是什么时候调用呢?
2. 出现个error: 09-15 04:16:50.816: E/Trace(779): error opening trace file: No such file or directory 不影响程序运行。
启动和结束service的code:
Intent intent = new Intent(this,LocalService.class); MainActivity.this.startService(intent); MainActivity.this.stopService(intent);
还有另外一种方式:
<service android:name=".localityservice.MusicPlayerService"> //在Manifest中先进行注册 <intent-filter> <action android:name="com.yang.music" /> //标明只有该名字的intent才可以call它 </intent-filter> </service> Intent i = new Intent("com.yang.music"); //在程序汇总启动该service startService(i);
相关文章推荐
- Android总结篇系列:Android Service
- android总结篇系列,service
- [Android学习系列19]Service的一些事
- 博客园 首页 新随笔 联系 管理 随笔 - 98 文章 - 0 评论 - 157 Android总结篇系列:Android Service
- android之Service组件学习总结-IntentService(二)
- Android总结篇系列:Android Service
- Android总结篇系列:Android Service
- Android 中 Service 学习,总结
- android service学习总结
- Android总结篇系列:Android Service
- 关于KS系列Android开发学习总结
- Android 5.1_ActivityManagerService 系列学习计划
- Android总结篇系列:Android Service
- Android总结篇系列:Android Service
- android-----IPC机制学习总结系列(一)
- Android总结篇系列:Android Service
- Android总结篇系列:Android Service
- android 四大组件之service学习总结(一)
- Android总结篇系列:Android Service
- Android之Service学习总结