10天学通Android开发(2-3)-核心组件Service绑定
导读:本文共8654字符,通常情况下阅读需要29分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 通过startService开启的服务,当访问者关闭时,服务仍然存在;访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定;如果使用Context.bindService()方法启动服务,则在服务未创建时,系统会调用服务的onCreate()方法,接着调用onBind()方法,这时就访问者与服务已经绑定了,主程序销毁时服务也会终止。1)绑定服务时,会自动创... ...
目录
(为您整理了一些要点),点击可以直达。2)如果创建后并启动后再绑定,不会重新创建,一个Service只有一个实例
3)同时启动和绑定服务时,解除绑定服务,但不会销毁关闭服务的,必须解除绑定并停止服务。
4)通过StartService启动服务,当前Activity销毁,服务不会停止,通过BindService启动服务,当前Activity销毁,服务停止。
案例:绑定服务
主要功能:Service实现不断输出1、2、3……的服务功能,Activity调用Service的公开方法,调出当时的一个值。继续上次服务的案例,增加绑定等功能。
<Button
android:id="@+id/btnBindService"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="绑定服务" />
<Button
android:id="@+id/btnUnbindService"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="解除绑定" />
2) MainActivity.java,添加相应代码:
定义两按钮:
3)添加事件侦听器:
4)在onClick中添加判断分支:
break;
需要当前类实现ServiceConnection,加进继承ServiceConnection:
同时产生了两接口方法,
成功绑定的方法:
}
5)onBind要指定返回值,否则绑定时,其实没有真正绑定,onServiceConnected不会执行
定义内部类MyServiceBinder扩展自Binder:
}
定义myservicebinder,并返回:
private final MyServiceBindermyservicebinder=new MyServiceBinder();
}
6)服务内添加一输出:
其中,每一秒钟执行:
timer.schedule(task,1000,1000);
7)onCreate、onDestroy添加startTimer、stopTimer:
}
8)取得服务实例:
}
9)公开一个方法,取得服务内部的数字(状态):
}
10)回到主Activity,取得服务
定义变量:
private MyService myService=null;
取得实例:
}
11)添加按钮
android:text="GetCurrentNum" />
定义按钮:
btnGetCurrentNumber.setOnClickListener(this);
实现:
break;
10天学通Android开发(2-3)-核心组件Service绑定的详细内容,希望对您有所帮助,信息来源于网络。