Android-Service
来源:互联网 发布:mac谷歌翻墙教程 编辑:程序博客网 时间:2024/06/05 16:10
服务:运行不依赖用户界面,依赖创建服务时所在的应用进程,当进程被停止后,该服务也会停止。
应用场景:后台下载任务,保持应用生命力等不依赖界面的任务。
定义一个服务:
创建一个类继承Service,实现onBind方法,在onBind里面返回一个IBinder对象。
public class MyService extends Service { private String TAG="MyService"; @Nullable @Override public IBinder onBind(Intent intent) { Log.i(TAG, "onBind: "); return new MyBinder(); }}
在清单文件注册服务:
<service android:name="com.sendi.service.MyService"></service>
Service中的方法:
onCreate方法:服务被创建时调用,当服务存在时则不被调用
onStarCommand()方法:服务被开启时调用
onDestroy()方法:服务销毁时调用
启动服务:
- startService(intent)
Intent intent=new Intent(this,MyService.class); startService(intent);
跟启动一个Activity很相似
- 绑定服务:bindService(intent,sc,BIND_AUTO_CREATE);
停止服务:
- stopService(intent)
Intent intent=new Intent(this,MyService.class); stopService(intent);
Service还有一个stopService方法,用于停止本身
- unbindService(ServiceConnection)
活动与服务间的通讯
自定义Binder,在类里面定义要执行的方法
在活动中定义一个ServiceConnect对象,并实现onServiceConnected和onServiceDisconnected方法
指定要绑定服务:Intent intent=new Intent(ServiceActivity.this,MyService.class);
绑定服务:定义bindService方法,传入参数:Intent,ServiceConnection,如何创建服务;
解绑服务:unbindService(ServiceConnection)
具体代码:
public class MainActivity extends AppCompatActivity { MyBinder mBinder=null; Intent intent=null; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intent=new Intent(this, MyService.class); } ServiceConnection sc=new ServiceConnection() { //绑定时调用 @Override public void onServiceConnected(ComponentName componentName, IBinder iBinder) { //转成自己定义的Binder mBinder= (MyBinder) iBinder; mBinder.print(); } @Override public void onServiceDisconnected(ComponentName componentName) { } }; public void bindService(View view) { Binder.clearCallingIdentity(); bindService(intent,sc,BIND_AUTO_CREATE); } @Override protected void onDestroy() { super.onDestroy(); unbindService(sc); }}
生命周期
- 创建服务时:onCreate=>onStartCommand=>onStart=>onDestroy,
- 绑定服务时:onCreate=>onBind=>unBind=>onDestroy,
注意:当绑定和启动服务后:
- 需要解绑和停止服务才会调用onDestory
- 如果先启动服务(startService),则先调用onStartCommand=>onStart
- 如果先绑定服务(bindService),则先调用onBind
IntentService类,可继承它来成为一个服务;绑定后会调用:onHandleIntent(Intent intent)。
特点:
- onHandleIntent(Intent intent):执行在子线程
- 在运行结束时该服务会自动停止
阅读全文
0 0
- [android]service中再启service
- android service
- Android Service
- android service
- Android Service
- Android service
- android service
- Android Service
- Android Service
- Android service
- Android:Service
- Android Service
- [Android] Service
- android service
- android service
- android service
- android service
- Android Service
- Python中的函数注意事项
- 题目1032:ZOJ
- 阿里和亚马逊的云战争:云计算正在成为新一代商业基础设施
- JavaScript实例2
- Calendar类实现打印日历
- Android-Service
- ShaderLab学习笔记
- ES6标准入门(第二版)pdf
- ArrayList源码解析
- Linux系统iscsi服务
- 第三章 授权(三)Authorizer、PermissionResolver及RolePermissionResolver(自定义Realm+JDBCRealm)
- 九度OJ:1054
- Java基础(一)Java概述相关
- POJ 2446 Chessboard(二分图最大匹配)