美文网首页
EventBus服务下载使用

EventBus服务下载使用

作者: 玖玖君 | 来源:发表于2019-07-19 11:07 被阅读0次
  • 1.先创建一个服务(别忘了在清单文件注册)
 public class DownLoadService extends Service {
   
    @Override
    public void onCreate() {
        super.onCreate();
        //请求数据
        okDownLoad();
    }

  @Override
   onStartCommand ···{}

    @Override
    public void onDestroy() {
        super.onDestroy();
    }

    //执行请求
    private void okDownLoad() {
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();

        Request request = new Request.Builder()
                .get()
                .url("http://cdn.banmi.com/banmiapp/apk/banmi_330.apk")
                .build();
        Call call = okHttpClient.newCall(request);

        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.e("tag","onFailure:"+e.getMessage());
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                ResponseBody body = response.body();
                InputStream inputStream = body.byteStream();
                long length = body.contentLength();

                saveFile(inputStream,length, Environment.getExternalStorageDirectory()+"/fw.apk");

            }
        });
    }

//执行操作
    private void saveFile(InputStream inputStream, long length, String path) {

        try {
            FileOutputStream outputStream = new FileOutputStream(new File(path));
            int len=0;
            int count=0;
            byte[] bytes = new byte[1024 * 20];
            while ((len=inputStream.read(bytes))!=-1){
                outputStream.write(bytes,0,len);
                count+=len;

                Log.e("TAG", "当前进度:" + count + " / " + length);

                //MessageEvent是创的一个Bean包,里面放要传递的数据

                MessageEvent messageEvent = new MessageEvent();
                messageEvent.setContentLength(length);
                messageEvent.setCount(count);
                //发送数据

                EventBus.getDefault().post(messageEvent);
            }
            inputStream.close();
            outputStream.close();
            Log.e("tag","下载完成");

        } catch (Exception e) {
            e.printStackTrace();
        }


    }
}

  • 2 在接收数据方注册EventBus与解注册
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);
        initView();
    }

  //在此方法中来执行EventBus的命令实现操作(这是主线程)
 @Subscribe(threadMode = ThreadMode.MAIN)
    public void getData(MessageEvent messageEvent) {
        long contentLength = messageEvent.getContentLength();
        long count = messageEvent.getCount();
        //设置进度
        mPb.setMax((int) contentLength);
        mPb.setProgress((int) count);
        mTvPb.setText((int) count * 100 / contentLength + "%");
    }


    @Override
    protected void onDestroy() {
       //解注册EventBus
        EventBus.getDefault().unregister(this);
       //解绑服务  
      stopService(new Intent(this,DownLoadService.class));
       //停止应用  
       finish();
    }

相关文章

  • EventBus服务下载使用

    1.先创建一个服务(别忘了在清单文件注册) 2 在接收数据方注册EventBus与解注册

  • EventBus

    《EventBus使用详解(一)——初步使用EventBus》 《EventBus使用详解(二)——EventBu...

  • EventBus源码详解

    EventBus笔记 一、EventBus使用 EventBus使用有四步骤: 二、Eventbus.getDef...

  • EventBus的使用和理解

    为什么要使用EventBus?或者说使用EventBus有什么好处? 让我们带着问题去了解和使用EventBus。...

  • EventBus的使用,以及源码分析

    EventBus的使用,以及源码分析 EventBus的使用 EventBus能够简化各组件间的通信,能够有效的分...

  • Android实际开发中,如何愉快的使用EventBus 3.+

    一、EventBus的使用场景 二、EventBus的介绍 三、EventBus的一般使用步骤(A->B:A页面接...

  • EventBus源码解析

    关于EventBus EventBus是一个轻量级的发布和订阅事件的库 有基本超过2W的开发者在使用 服务于许多大...

  • EventBus3.0 一

    EventBus3.0 使用 EventBus基本使用发送事件注册接收(main posting backgrou...

  • Android EventBus 的源码解析

    1、EventBus 的使用 1.1 EventBus 简介 EventBus 是一款用于 Android 的事件...

  • EventBus3.1.1 源码解析

    前言 在上一文我介绍了EventBus的基础知识以及如何使用EventBus3.0+ 使用入门,但EventBus...

网友评论

      本文标题:EventBus服务下载使用

      本文链接:https://www.haomeiwen.com/subject/hirjlctx.html