休言女子非英物,夜夜龙泉壁上鸣。这篇文章主要讲述关于Android服务相关的知识,希望能为你提供帮助。
Service是Android中四大组件之一,在android开发中起到非常重要的作用。
通过startService()启动的服务处于“启动的”状态,一旦启动,service就在后台运行,即使启动它的应用组件已经被销毁了。通常started状态的service执行单任务并且不返回任何结果给启动者。比如当下载或上传一个文件,当这项操作完成时,service应该停止它本身。
还有一种“绑定”状态的service,通过调用bindService()来启动,一个绑定的service提供一个允许组件与service交互的接口,可以发送请求、获取返回结果,还可以通过夸进程通信来交互(IPC)。绑定的service只有当应用组件绑定后才能运行,多个组件可以绑定一个service,当调用unbind()方法时,这个service就会被销毁了。
文章图片
关于Service生命周期:
文章图片
结合书本上的相关内容,制作了一个简单的音乐播放器,更好地理解服务通信在实际开发中的应用。
service的相关代码如下:
public class MusicService extends Service {
private MediaPlayer mp = new MediaPlayer();
private final IBinder binder = new MyBinder();
public class MyBinder extends Binder {
MusicService getService() {
return MusicService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
private String filepath = Environment.getExternalStorageDirectory() + "/storage/emulated/0/Unknown-Flower.mp3";
public MusicService() {
try {
mp.setDataSource(filepath);
mp.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
public MediaPlayer getMp() {
return mp;
}
public void play() {
mp.setLooping(true);
if (mp.isPlaying() & & mp != null) mp.pause();
else mp.start();
}
public void stop() {
if (mp != null) {
mp.stop();
try {
mp.prepare();
mp.seekTo(0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (mp != null) {
mp.stop();
mp.release();
}
}
}
效果如图:
【关于Android服务】
文章图片
推荐阅读
- Win10企业版安装apn接入软件后不能上网
- Android 设置背景透明度
- Android N 7.1.1 锁屏之上显示Toast
- Android N 7.1.1 处于锁屏界面时可以转屏
- android缩放动画的两种实现方法
- Android笔记三十四.Service综合实例二
- 安卓市场--框架搭建2
- Android调用camera错误setParameters failed深层解析
- Android开发学习之路--Notification之初体验