关于Android服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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服务的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅关于Android使用bindService()绑定服务,onServiceConnected()方法是异步回调的问题以及借鉴NotificationManager来优化(代

我的Android进阶之旅关于Android使用bindService()绑定服务,onServiceConnected()方法是异步回调的问题以及借鉴NotificationManager来优化(代

关于Android发送邮件

关于LocalHost错误的Android Volley库

关于Android

Android Service完全解析,关于服务你所需知道的一切(上)