今天做了一个demo,需要更新下载进度,搜集信息发现两种方案

1,使用Hanlder机制

在Activity中 重新 Handler的handleMessage方法

 private Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int i = msg.arg1;            builder.setProgress(100, i, false);            //发送通知            notificationManager.notify(notificationFlag, builder.build());            if (i == 100) {                notificationManager.cancel(notificationFlag);                installApp(filePath);            }        }    };
在子线程中 获取Message对象,并发送

 new Thread() {            @Override            public void run() {                super.run();                for (int i = 0; i <= 100; i++) {                      Message msg = handler.obtainMessage();                      msg.arg1 = i;                      handler.sendMessage(msg);                    try {                        Thread.sleep(200);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }.start();

2,在子线程中 使用Activity的 runOnUiThread()方法

new Thread() {            @Override            public void run() {                super.run();                for (int i = 0; i <= 100; i++) {                    MainActivity act= (MainActivity) context;                    final int finalI = i;                    act.runOnUiThread(new Runnable() {                        @Override                        public void run() {                            builder.setProgress(100, finalI, false);                            //发送通知                            notificationManager.notify(notificationFlag, builder.build());                            if (finalI == 100) {                                notificationManager.cancel(notificationFlag);                                installApp(filePath);                            }                        }                    });                    try {                        Thread.sleep(200);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }            }        }.start();



更多相关文章

  1. Android(java)学习笔记125:Clock app编写报错02
  2. Android中对TextView中的部分内容的字体样式的设置方法
  3. [Android(安卓)Pro] android 混淆文件project.properties和progu
  4. Android下的JNI创建多线程的方法
  5. 浅析Android(安卓)手机卫士设备管理权限锁屏
  6. Android实现关机重启的方法
  7. android使用service和activity获取屏幕尺寸的方法
  8. android RSA公钥加密 公钥解密,解决乱码问题
  9. Android(安卓)中与 Touch 事件详解

随机推荐

  1. 跟着Android官方培训课程学习,挖坑填坑记
  2. ubuntu下无法更新android sdk问题 adt更
  3. RelativeLayout用到的一些重要的属性
  4. 关于android LinearLayout的比例布局
  5. ImageView的属性android:scaleType
  6. androidx.core.widget.NestedScrollView
  7. android中的menu和子menu小结
  8. 如何手工创建android项目
  9. 如何使用android中的搜索功能
  10. 从android游戏框架看其生命周期!