Androidx学习笔记(64)---服务两种启动方式
来源:互联网 发布:3d算法技巧 编辑:程序博客网 时间:2024/06/11 10:03
服务两种启动方式
- startService:服务被启动之后,跟启动它的组件没有一毛钱关系
- bindService:跟启动它的组件同生共死
- 绑定服务和解绑服务的生命周期方法:onCreate->onBind->onUnbind->onDestroy
开启方式
- startService
- 该方法启动的服务所在的进程属于服务进程
- Activity一旦启动服务,服务就跟Activity一毛钱关系也没有了
bindService
- 该方法启动的服务所在进程不属于服务进程
- Activity与服务建立连接,Activity一旦死亡,服务也会死亡
服务的混合调用
- 先开始、再绑定,先解绑、再停止
两种启动方法混合使用
- 用服务实现音乐播放时,因为音乐播放必须运行在服务进程中,可是音乐服务中的方法,需要被前台Activity所调用,所以需要混合启动音乐服务
- 先start,再bind,销毁时先unbind,在stop
服务代码
public class MyService extends Service {
//绑定时调用
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
System.out.println("bind方法");
return null;
}
//解绑时调用
@Override
public boolean onUnbind(Intent intent) {
// TODO Auto-generated method stub
System.out.println("unbind方法");
return super.onUnbind(intent);
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
System.out.println("create方法");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
System.out.println("start方法");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
System.out.println("destroy方法");
super.onDestroy();
}
}
事件代码
public class MainActivity extends Activity {
private Intent intent;
private MyServiceConn conn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intent = new Intent(this, MyService.class);
conn = new MyServiceConn();
}
public void start(View v){
startService(intent);
}
public void stop(View v){
stopService(intent);
}
public void bind(View v){
//绑定服务
bindService(intent, conn, BIND_AUTO_CREATE);
}
public void unbind(View v){
//解绑服务
unbindService(conn);
}
class MyServiceConn implements ServiceConnection{
//服务连接成功时,此方法调用
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
}
//服务失去连接时,此方法调用
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
}
}
0 0
- Androidx学习笔记(64)---服务两种启动方式
- Androidx学习笔记(62)--- 服务Service
- Androidx学习笔记(68)--- 服务分类
- Androidx学习笔记(61)--- 广播的两种类型
- Androidx学习笔记(52)--- Activity的四种启动模式
- Service学习(本地服务的两种启动方式以及跨进程服务)
- Android启动服务播放音乐(两种启动方式)
- Androidx学习笔记(65)--- 通过绑定服务调用服务里的方法
- Androidx学习笔记(20)-- SQLite创建 增删改查(普通方式和API方式)
- Androidx学习笔记(36)---网络提交数据的方式--GET方式提交数据
- Androidx学习笔记(37)--- 网络提交数据的方式--POST方式提交数据
- Androidx学习笔记(71)--- 需要支付的应用(调用远程的服务)
- Androidx学习笔记(9)-- logcat
- Androidx学习笔记(18)-- junit单元测试
- Androidx学习笔记(19)-- SQLite 简介
- Androidx学习笔记(21)-- SQLite 事务
- Androidx学习笔记(24)-- ArrayAdapter&SimpleAdapter
- Androidx学习笔记(24)--对话框
- 三自由度机械手工作空间的设计(MATLAB)
- Androidx学习笔记(63)---电话录(窃)音(听)机(器)
- c++习题——1
- POJ - 3481 Double Queue
- PHP实现模拟登录
- Androidx学习笔记(64)---服务两种启动方式
- 将java编写的socket程序运行于linux服务器上
- centos import cx_oracle ImportError: No module named cx_Oracle 解决方法
- Boyer-Moore算法
- Androidx学习笔记(65)--- 通过绑定服务调用服务里的方法
- Androidx学习笔记(66)--- 简单音乐播放器原理
- android的进阶findViewById
- GDKOI2016总结
- windows平台下开发nginx模块(还添加了gzip模块)