在Android有异步处理需要重要的Service和Handler组件,今天首先学习一下Service组件,
其中涉及到Android Service中进程间通信和bindService()的方法下一次在讲解学习
1:首先来看看在文档中对于Service的概念的解释:
Service是Android系统中的一种组件,重要性可以堪比Activity,但是也有显著的区别,Activity可以和用户进行交互,但是Service只能运行在后台,不能和用户直接交互;
当我们退出应用的时候,Service还会在后台运行,进程不会结束;特别注意我们需要使用的Service的时候,我们需要在AndroidManifset.xml文件的service标签进行注册
然后我们我们有两种启动Service的方法包括(①:Context.startService() 和②: Context.bindService()
2:需要使用Service的地方:
在文档中举了下面两个例子
最让我们想到的是应该是播放器的时候,我们可能需要边听歌边干些其他的事情,此时我们会退出播放器的应用,如果不适用Service的话,一退出应该应用我们就不能听歌了;还有比如我们需要通过网络获取数据,由于使用网络获取数据的速度比较慢,此时我们可以使用Service来在后台进行获取更新,隔一段时间把获取到的数据发回,而不是让我每次要获取数据都要打开应用;
3:Service与Activity通信:
Service后端的数据最终还是要呈现在前端Activity之上的,
在启动Service的时候,文档中这样描述:Note that services, like other application objects, run in the main thread of their hosting process
主要该Service,和其他应用对象一样,运行其应用进程主线程上
4:Service 启动方式:
一、context.startService()
二、context.bindService();
使用Service之前必须在AndroidMainfest.xml 中使用<service android:name=".service的类名"/>进行注册
5:Service的使用方法(我今天主要学习的是startService)
第一步:自己写一个继承Service类的类
第二步:在AndroidMainfest.xml文件中进行注册
第三步:startService()



6:生命周期:

首先看下声明周期的运行图

①: context.startService() 启动Service是会经历一下几个方法
启动的时候:context.startService() ---> onCreate() ---> onStartCommand()
销毁的时候:ontext.stopService() ---> onDestroy();
如果Service没运行,则此时会先调用onCreate()方法,然后再调用onStartCommand();
如果Service已经在运行,则只调用onStartCommand(),Service的onStartCommand(),方法可能会调用多次
②:
启动时候:context.bindService() ---> onCreate() --->onBind();
销毁的时候:onUnibind() ---> onDestroy()
onBind() 将会�o客户端返回一个IBind接口的实例,此时客户端可以去调用服务的方法,不过此时Activity与Service算是绑定在一起了
意思是说如果Activity退出,那么此时的Service也会退出


接下来是实例Demo:

继承Service的方法:  import android.app.Service; import android.content.Intent; import android.os.IBinder;  public class ServiveTest extends Service {  @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; }  @Override public void onCreate() { System.out.println("onCreat------->"); super.onCreate(); }  @Override public void onDestroy() { // TODO Auto-generated method stub System.out.println("onDestroy------->"); super.onDestroy(); }  @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("onStartCommand------->"); return super.onStartCommand(intent, flags, startId); }  } 


今天就初步学习了一下Service的使用context.startService()的方法,下一次会进行使用context.bindService()和进程间通信的学习

更多相关文章

  1. Android(安卓)自定义View--手写签名
  2. android异步操作类AsyncTask的使用详解
  3. Activity生命机制与状态保存机制
  4. android 应用开发框架
  5. Android中为TextView增加自定义的HTML标签
  6. 编写高效的android代码(译文)
  7. libcurl库编译生成不带版本的设置方法
  8. Android中的服务(service)详解(一)
  9. android init进程分析 基本流程

随机推荐

  1. Android中的引导页,一个Activity搞定引导
  2. android获取屏幕分辨率之DisplayMetrics
  3. Android 7.1.2(Android N) BootaAimation
  4. android 音频播放 以及 二维码模块中音频
  5. Android中利用SpannableString实现点击同
  6. Android MediaPlayer 设置音轨
  7. Android setting各子页面地址
  8. Android中使用am命令实现在命令行启动程
  9. android 介绍Retrofit的简单使用
  10. android 理解Fragment生命周期