Android四大组件之------Service
2016-10-25 01:14
253 查看
一、服务的概念:
二、Service的理解
三、服务的特点
四、服务的分类
五、Service的启动与停止
bindService(Intentintent,ServiceConnectionconnection,Context.BIND_AUTO_CREATE)
unbindService(ServiceConnection connection)
六、Service的生命周期
1.onCreate()—>onBind()—>onUnbind()—>onDestroy()
2. onCreate()—>onStartCommand()—>onDestroy()
3.
七、Service的配置
八、使用onBind()开启服务的一些繁琐操作
private ServiceConnection conn;
@Override
protected void onDestroy() {
super.onDestroy();
if(conn!= null) {
unbindService(conn);
conn = null;//可有可无,有了更好
}
}
Service是一个应用组件, 它用来在后台完成一个时间跨度比较大的工作且没有关联任何界面。
二、Service的理解
服务是Context的一个对象,它是一个应用组件,可以在后台完成一个长时间的操作,默认在主线程执行。它不提供应用界面,当一个应用可以启动一个服务后,且当用户启动其他应用的时候,这个服务将会在后台执行。常用的案例有:访问网络、播放音乐、文件IO操作大数据的数据库操作。
三、服务的特点
1.Service在后台运行,不用与用户进行交互 2.即使程序被切换到后台,或者用户打开新的应用,服务仍可运行 3.服务并非运行在独立的进程中,而是依赖于创建服务的应用程序进程。如果某个应用进程被杀掉,该服务也会停止 4.在默认情况下,Service运行在应用程序进程的主线程(UI线程)中,如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在分线程中处理,避免阻塞用户界面
四、服务的分类
1.Local Service(本地服务) Service对象与Service的启动者在同个进程中运行, 两者的通信是进程内通信 2.Remote Service(远程服务) Service对象与Service的启动者不在同一个进程中运行,这时存在一个进程间通信的问题, Android专门为此设计了AIDL来实现进程间通信
五、Service的启动与停止
1.方式一:一般启动 startService(Intent intent) stopService(Intent intent) 2.方式二:
bindService(Intentintent,ServiceConnectionconnection,Context.BIND_AUTO_CREATE)
unbindService(ServiceConnection connection)
六、Service的生命周期
1.onCreate()—>onBind()—>onUnbind()—>onDestroy()
2. onCreate()—>onStartCommand()—>onDestroy()
3.
七、Service的配置
1.定义一个类继承于Service类 public class MyService extends Service{ } 2.在Androidmanifest.xml文件中配置Service <service android:name=".local.MyLocalService"/> //这个是用来配置本地服务的 <service android:name=".remote.MyRemoteService"> <intent-filter> //用了这个就可以实现远程服务了 <action android:name="com.atguigu.l07_service.remote.MyRemoteService.Action"/> </intent-filter> </service>
八、使用onBind()开启服务的一些繁琐操作
private ServiceConnection conn;
//绑定服务 public void bindMyService(View v){ if(conn == null) {//做这个判断是为了防止误操作,比如你没开启服务就进行了解绑 conn = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.e("TAG", "onServiceConnected"); } @Override public void onServiceDisconnected(ComponentName name) { Log.e("TAG", "onServiceDisconnected"); } }; Intent intent = new Intent(this,LocalService.class); bindService(intent,conn, Context.BIND_AUTO_CREATE); Toast.makeText(this, "bindMyService", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "已经绑定过了", Toast.LENGTH_SHORT).show(); } } //解绑服务 public void unbindMyService(View v){ if(conn != null) { unbindService(conn); conn = null;//设置为null,下次创建链接时才不会报错 Toast.makeText(this, "unbindMyService", Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(MainActivity.this, "还没有绑定服务", Toast.LENGTH_SHORT).show(); } }
@Override
protected void onDestroy() {
super.onDestroy();
if(conn!= null) {
unbindService(conn);
conn = null;//可有可无,有了更好
}
}
相关文章推荐
- Android四大组件之 Service
- 01 Android应用的构成 四大组件 Activity, Intent Receiver , Service , Content Provider
- Android学习笔记39:Android四大组件之Service
- android四大组件之Service
- Java乔晓松-android的四大组件之一Service(服务的绑定)
- Android四大组件之 Service
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)
- Android开发四大组件---Service详解
- android四大组件之一Service的startService()与bindService()区别?
- Android四大组件Activity、service、Content Provider、BroadCast Receiver
- android 编写Service(四大组件之一)的方法
- Android实训课程之三 这次课老师先是提到了Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。然后重点提到Acti
- Android学习笔记(2)————Android四大组件之二(Service )
- Android四大组件之一Service(服务)
- Android应用程序四大组件之Service(一)
- 01 Android应用的构成 四大组件 Activity, Intent Receiver , Service , Content Provider
- Android四大组件——Service 生命周期详解
- android四大组件之Service
- Java乔晓松-android的四大组件之一Service(服务的绑定)
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)