当前位置: 首页 > news >正文

武冈市住房和城乡建设局网站/百度sem认证

武冈市住房和城乡建设局网站,百度sem认证,电子商务网站建设移动电商开发,wordpress 增加背景通过IntentService的继承类实现命令触发的服务,也可以直接通过Service的继承类来实现。在IntentService中的例子,我们增加了StopService( )的方式,用于试验。在实际应用中,IntentService常用于一次性运行,自动结束的情…

通过IntentService的继承类实现命令触发的服务,也可以直接通过Service的继承类来实现。在IntentService中的例子,我们增加了StopService( )的方式,用于试验。在实际应用中,IntentService常用于一次性运行,自动结束的情况,不需要人工停止干预。对于需要人工干预的停止的,长时间(或无限制)运行的情况,可直接继承Service的方式,例如音乐播放。IntentService也是Service的一个继承类。

继承Service类

在本例中,我们中我们模拟音乐播放,提供了两个参数,一个是音乐列表,一个是无序播放标识。

和上一例子不同,Service不会自动结束,必须要用户干预。例如播放音乐或者audiobook,当用户离开Appcliation时,音乐还能继续播放,service会持续下去,不停止,直至用户主导停止服务,即使音乐播放完毕,模式也非循环播放,当播放完所有音乐时,service仍然存在,直至用户主导stopService()或者服务本身stopSelf()。例子是个模拟例子,不设计真正的音乐播放。

客户端代码

public class ServiceTest2 extends Activity{
... ...
//对于客户端,和上次例子相似,通过Intent作为命令,本例传递的参数为两个,通过startService()来启动服务。
private void startPlayer(){
Intent i = new Intent(this,ServicePlayer.class);
i.putExtra(ServicePlayer.EXTRA_PLAYLIST, "playlist");
i.putExtra(ServicePlayer.EXTRA_SHUFFLE, true);
startService(i);
}
//有用户干预的停止服务。在例子中,我们并不使用创建服务的intent,因为Activity的生命周期可能已经结束,intent已被垃圾回收,我们重新开启Activity,在新的Activity中,不需开启服务就可直接停止。
private void stopPlayer(){
stopService(new Intent(this,ServicePlayer.class));
}
}

Service端代码

public class ServicePlayer extends Service{
public static final String EXTRA_PLAYLIST = "com.wei.android.learning.EXTRA_PLAYLIST";
public static final String EXTRA_SHUFFLE = "com.wei.android.learning.EXTRA_SHUFFLE";
private boolean isPlaying = false;

//将在以后学习Bind Service的模式
public IBinder onBind(Intent arg0) {
return null;
}
//收到客户端触发,如果服务尚未启动,则先执行onCreate(),再此进行服务初始化处理。
public void onCreate() {
super.onCreate();
}
//在收到stopService()时触发,我们将在此处理停止Service的相关事宜,例如停止后台线程的运行等等。
public void onDestroy() {
playStop();
super.onDestroy();
}
//当系统内存少时,将要求终止服务,我们在此进行关闭服务的处理,例如保持相关的状态等,如服务部需保持特定状态,则无需重写此方法。
public void onLowMemory()
{
super.onLowMemory();
}
//收到客户端请求时触发,由于onStartCommand()运行在主线程,将进行本次服务的初始化,并开启后台线程运行相关的处理,具体参加线程的学习笔记,本例只考察Service相关内容。返回值将告诉系统如果service的进程被杀掉,将会如何:START_STICKY表示服务将回到开始状态,如同onStartCommand()被called,但是Intent不会重发;START_REDELIVER_INTENT表示要求系统重新发送一次Intent,即服务将重新触发执行onStartCommand();START_NOT_STICKY表示无需干预,服务停止,等待有新的命令触发。
public int onStartCommand(Intent intent, int flags, int startId) {
showInfo("onStartCommand");
String playlist = intent.getStringExtra(EXTRA_PLAYLIST);
boolean suffle = intent.getBooleanExtra(EXTRA_SHUFFLE, false);
playStart(playlist,suffle);
return START_NOT_STICKY;
}
private void playStart(String playlist, boolean suffle){
if(! isPlaying){
isPlaying = true;
}
}
private void playStop(){
if( isPlaying){
showInfo("Go to Stop!");
isPlaying = false;
}
}

}

如果有三个客户端都通过startService(),也只会启动一个服务。只有第一个发出命令时,系统发现服务没有启动,将启动服务,其余的直接触发onStartCommand()。通过startService()并不仅仅是发送命令,而是告诉系统服务维持运行,直至通知它服务停止。

相关链接: 我的Android开发相关文章

http://www.lbrq.cn/news/1341811.html

相关文章:

  • 怎么自己搭建一个博客网站/二手交易平台
  • 温州网站建设seo/高清视频线和音频线的接口类型
  • 让其他公司做网站的话术/哪里可以学seo课程
  • 凡科网网站系统/重大军事新闻最新消息
  • 深圳市政府门户网站功能建设/老域名
  • 邵阳做网站的有哪些/域名注册网站
  • 厦门做网站的公司/网页制作工具有哪些
  • 广西兴业县建设局网站/seo外链推广工具下载
  • 海淀网站制作服务公司/网络推广的公司是骗局吗
  • html中文网页模板素材/宁波seo网站推广软件
  • 网站开发教育类/市场营销方案怎么做
  • 网站建设yuue/网级移动营销app下载
  • 游戏棋牌网站建设/广州抖音seo
  • 网站色调选择/seo职业
  • 莆田网站建设公司/宁波seo费用
  • 长沙做网站那家好/如何写好软文推广
  • 学校网站维护怎么做/seo短视频入口引流
  • 个人网站开发协议/微信群二维码推广平台
  • 哪个网站可以做视频片头/网站域名在哪里查询
  • 佛山做网站/小游戏推广接单平台
  • 建设网站要求/cps广告联盟平台
  • 网站内容设计基本原则/成都调查事务所
  • 优惠券网站做淘客违规吗/新闻20条摘抄大全
  • wordpress地址和找点地址/上海做网站优化
  • 如何构建电子商务网站/免费发帖推广的平台
  • 住房城乡建设部网站首页/seo整体优化
  • 青岛知名网站建设多少钱/网站流量分析的指标有哪些
  • 免费定制网页/山东济南seo整站优化公司
  • 怎么用lamp做网站/每日财经要闻
  • 个人可以做网站么/种子搜索器
  • 从零开始理解百度语音识别API的Python实现
  • es-drager-blog
  • vue如何监听localstorage
  • 嵌入式软件工程师笔试题(二)
  • 比较useCallback、useMemo 和 React.memo
  • 编译技术的两条演化支线:从前端 UI 框架到底层编译器的智能测试