一.使用场景
如果要通知多个Activity,广播较为适合.但广播较为耗费性能.

二.Broadcast更新Activity中的UI

1.新建一个接口OnUpdateUI,用于回调更新UI

public interface OnUpdateUI {
void updateUI(String i);
}

2.BroadcastReceiver代码

public class MyBroadcast extends BroadcastReceiver {

    OnUpdateUI onUpdateUI;
@Override
public void onReceive(Context context, Intent intent) {
String progress = intent.getStringExtra("progress");
onUpdateUI.updateUI(progress);
} public void SetOnUpdateUI(OnUpdateUI onUpdateUI){
this.onUpdateUI = onUpdateUI;
} }

3.Activity中代码:

public class MainActivity extends Activity {

    public static final String FLAG = "UPDATE";
MyBroadcast myBroadcast;
TextView tip;
Intent intent; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tip = (TextView)findViewById(R.id.tip); myBroadcast = new MyBroadcast();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(FLAG);
registerReceiver(myBroadcast, intentFilter); intent = new Intent(this, MyService.class); // 更新UI
myBroadcast.SetOnUpdateUI(new OnUpdateUI() {
@Override
public void updateUI(String i) {
tip.setText(i);
}
});
} protected void myClick(View v){
// 发送广播
if( v.getId() == R.id.btn ){
Intent intent = new Intent();
intent.setAction(FLAG);
intent.putExtra("progress", System.currentTimeMillis()+"");
sendBroadcast(intent);
} // 启动服务
if (v.getId() == R.id.btn2){
startService(intent);
}
} @Override
protected void onDestroy() {
unregisterReceiver(myBroadcast);
stopService(intent);
super.onDestroy();
}
}

三.Service发送广播,广播更新Activity中UI

Service发送广播

Intent it = new Intent();
it.setAction(MainActivity.FLAG);
it.putExtra("progress", i+"");
sendBroadcast(it);

最新文章

  1. ubuntu16.04安装jdk,tomcat
  2. MyEclipse、Eclipse优化设置
  3. 基于FPGA的电压表与串口通信(下)
  4. Sublime Text插件:HTML+CSS+JAVASCRIPT+JSON快速格式化[转]
  5. mysql 关于列的语句
  6. 有关<table>的几个问题
  7. Android多线程异步处理:AsyncTask 的实现原理
  8. 【暑假】[深入动态规划]UVa 1412 Fund Management
  9. 运用surfaceView与MediaPlayer实现播放视频的功能
  10. HTML5 push
  11. 百练2755 奇妙的口袋 【深搜】or【动规】or【普通递归】or【递推】
  12. 今天工作中遇到的根据用户id取得产品大类和相关小类的问题
  13. 三步快速解决dll冲突问题
  14. Jquery-鼠标事件
  15. IDEA 环境设置
  16. JavaScript函数调用模式
  17. Python爬虫实例:爬取猫眼电影——破解字体反爬
  18. 查询物理表字段(mysql)
  19. java进程和线程的区别
  20. 迭代器Iterator的底层实现原理

热门文章

  1. 【CF1017F】The Neutral Zone(Bitset,埃氏筛)
  2. CodeVS1611_APIO2009_抢掠计划_C++
  3. tcpreplay 缓存算法研究
  4. 【linux高级程序设计】(第十五章)UDP网络编程应用 4
  5. python接口自动化9-https请求(SSL)【转载】
  6. Xamarin XAML语言教程隐藏文件使用Progress属性设置进度条
  7. idea点击RUN启动报错: Broken configuration due to unavailable plugin or invalid configuration dat
  8. 十. 图形界面(GUI)设计3.标签、按钮和按钮事件
  9. SQL表操作习题4 14~25题 缺20题
  10. 个人博客 V0.0.3 版本 ...