首页 Android Handle-handle 的用法

Handle-handle 的用法

handle 的初始化。(主线程) private Handler handle= new Handler(){ pub…

handle 的初始化。(主线程)

private Handler handle= new Handler(){
        public void handleMessage(android.os.Message msg) {

            switch (msg.what) {
            case SCANING:
                  ScanInfo scanInfo=(ScanInfo) msg.obj;
                  tv_scan_status.setText("正在扫描:"+scanInfo.name);
                  TextView tv= new  TextView(getApplicationContext());
                  if(scanInfo.isvirus){
                      tv.setTextColor(Color.RED);
                      tv.setText("发现病毒:"+scanInfo.name);
                  }else{
                      tv.setTextColor(Color.BLACK);
                      tv.setText("扫描安全:"+scanInfo.name);
                  }
                  ll_scan_container.addView(tv,0);
                break;

            case FINISH:
                  tv_scan_status.setText("扫描完毕");
                  iv_scan.clearAnimation();
                break;
            }
        };
    };

把类提取出来  作为子线程和主线程之间数据交互的桥梁

/**
    * 扫描信息的内布拉
    * @author lyq
    *
    */
   class   ScanInfo{
        String packname;
        String name;
        boolean isvirus;
   }

 

子线程的中的Message 设置。

new Thread() {
            public void run() {
                List<PackageInfo> infos= pm.getInstalledPackages(0);//获取所有的安装应用
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                pb_scan.setMax(infos.size());
                int progress=0;
                for(PackageInfo info:infos){
                    String datadir= info.applicationInfo.dataDir;
                    String sourcedir=info.applicationInfo.sourceDir;
                    String md5=getFileMd5(sourcedir);
                    ScanInfo scanInfo= new  ScanInfo();
                    scanInfo.name=info.applicationInfo.loadLabel(pm).toString();
                    scanInfo.packname=info.applicationInfo.packageName;
                    System.out.println(md5+":"+info.applicationInfo.loadLabel(pm));
                    if(AntivirsuDao.isVirus(md5)){
                        //发现病毒
                        scanInfo.isvirus=true;
                    }else{
                        //扫描安全
                        scanInfo.isvirus=false;

                    }
                    progress++;
                    pb_scan.setProgress(progress);

                    Message msg= Message.obtain();
                    msg.obj=scanInfo;
                    msg.what=SCANING;
                    handle.sendMessage(msg);

                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                Message msg= Message.obtain();
                msg.what=FINISH;
                handle.sendMessage(msg);

            };
        }.start();

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

android studio查看android手机日志

android studio查看android手机日志

本文在尝试了,使用adb,eclipse查看log未果之后,使用android studio来查看unity打包的apk...
Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check t

Conversion to Dalvik format failed: Unable to execute dex: java.nio.BufferOverflowException. Check t

在android高版本开发环境(sdk 4.4)导入低版本(sdk 3.0)的工程时编译报错,报错信息如:Convers...
用Bundle和直接用Intent.putExtra(“xx”,yy)传递有什么不同

用Bundle和直接用Intent.putExtra(“xx”,yy)传递有什么不同

QQ群里一个提出来了 。。长知识了。。 Intent intent = new Intent(); intent.put...
Universal-Image-Loader解析——DisplayImageOptions的详细配置

Universal-Image-Loader解析——DisplayImageOptions的详细配置

在使用这个框架的时候,我们必须要配置一个DisplayImageOptions对象来作为ImageLoader.getI...
安卓测试环境的配置

安卓测试环境的配置

AndroidManifest.xml 配置 <uses-permission android:name="and...
返回顶部