码迷,mamicode.com
首页 > 移动开发 > 详细

关于Android服务

时间:2017-06-17 15:57:09      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:请求   lan   null   sdn   blog   word   作用   通信   rac   

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服务

标签:请求   lan   null   sdn   blog   word   作用   通信   rac   

原文地址:http://www.cnblogs.com/xj0415/p/7040226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!