之前我们曾向您介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的。那么如何实现service动态更新UI界面呢?

案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务。

注册BroadcastReceiver

在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播。

    
  1. @Override
  2. protectedvoidonStart(){//重写onStart方法
  3. dataReceiver=newDataReceiver();
  4. IntentFilterfilter=newIntentFilter();//创建IntentFilter对象
  5. filter.addAction("com.justel.serviceBC");
  6. registerReceiver(dataReceiver,filter);//注册BroadcastReceiver
  7. super.onStart();
  8. }

停止service命令

主程序activity可发布广播,用于向后台service传递数据或控制信息,如停止service命令。

    
  1. btnStop.setOnClickListener(newOnClickListener(){//为按钮添加点击事件监听
  2. @Override
  3. publicvoidonClick(Viewv){//重写onClick方法
  4. IntentmyIntent=newIntent();//创建Intent对象
  5. myIntent.setAction("com.justel.service");
  6. myIntent.putExtra("cmd",CMD_STOP_SERVICE);
  7. sendBroadcast(myIntent);//发送广播
  8. }
  9. });

接收广播

后台service注册BroadCastReceiver用于接受主程序发送的广播

    
  1. @Override
  2. publicintonStartCommand(Intentintent,intflags,intstartId){//重写onStartCommand方法
  3. IntentFilterfilter=newIntentFilter();//创建IntentFilter对象
  4. filter.addAction("com.justel.service");
  5. registerReceiver(cmdReceiver,filter);//注册BroadcastReceiver
  6. doJob();//调用方法启动线程,自己来完成
  7. returnsuper.onStartCommand(intent,flags,startId);
  8. }

实时发送

后台service在doJob()方法中连接服务器并向主程序实时发送广播。

    
  1. /**
  2. *启动一个子纯种并连接服务器,接收服务器返回数据data。代码略。。。
  3. */
  4. Objectdata;//服务器返回的数据data
  5. Intentintent=newIntent();//创建Intent对象
  6. intent.setAction("com.justel.service");
  7. intent.putExtra("data",data);
  8. sendBroadcast(intent);//发送广播

至此,我们实现了主程序通过接收广播实时更新应用的UI界面。

更多相关文章

  1. Android四大基本组件介绍与生命周期
  2. Android(安卓)bluetooth介绍(四): a2dp connect流程分析
  3. 第三章 Android程序设计基础
  4. Android(安卓)开发中的倒计时
  5. Android(安卓)开机自启动程序
  6. Android电量和插拔电源状态广播监听
  7. Android发送短信方法实例详解
  8. Android中ListView中Item的设置
  9. Android(安卓)系统广播Action一览验证

随机推荐

  1. Android(安卓)中文API (32) ―― TimePicke
  2. Android响应式UI教程
  3. Android多媒体学习三:实现自己的Camera
  4. Android的Touch事件处理机制
  5. 基于Android(安卓)studio3.6的JNI教程之h
  6. android launchmodel的使用
  7. android开发每日汇总【2011-11-12】
  8. XBMC 使用 Android(安卓)StageFright 硬
  9. Android(安卓)统计图表引擎 AChartEngine
  10. 如何在Android真机上检测是否有Google Ma