参考了CSDN上的这个文章(HERE),之前只是新开一个线程:

public class DownloadThread implements Runnable{
String tarFile ;
public void setTar(String tarFile)
{
this.tarFile = tarFile ; //在Activity和线程之间传值
} @Override
public void run() {
..............
..............

后来看了人家写的那个例子,想把人家Service里面的东西直接复制到我的Thread里面,发现老问题,很多对象是在Activity里定义的,不能在Thread里调用。

于是想到用Thread直接调用人家的Service,发现Intent是在Activity之间传值的(后来发现也可以在Activity和Service之间传值),不能在Thread和Service之间传值。

此刻心中已经又万匹草泥马呼啸而过了,但还是决定用SharedPreferences传值。结果发现,这个类需要用到context,which,Thread里面还是没有。。。

我只想说Thread里面写东西真是越少越好。。

最后直接在Activity里调用了Service,并且用Intent传值,如下:

            Intent it = new Intent(MainActivity.this,ServiceOne.class);
it.putExtra("url", tarFile);
context.startService(it);

有人要问我为什么不一开始就在Activity里调用Service呢?因为4.0以后网络操作都是不能放在主线程里的,要单开线程,所以没有考虑到。

但是转念一想,那为什么作者的程序可以呢?仔细看了一下,发现作者的新线程是这么写的,在Service里面!值得学习。

//下载更新文件
private void downFile(final String url) {
new Thread() {
public void run(){
try {
HttpClient client = new DefaultHttpClient();
// params[0]代表连接的url
HttpGet get = new HttpGet(url);

另外,这是下载完成后安装的功能:

                                //下载完成后清除所有下载信息,执行安装提示
download_precent=0;
nm.cancel(notificationId);
Instanll((File)msg.obj,context);

End.

最新文章

  1. Csstyle - 创建简洁、可维护强的 CSS 样式
  2. CentOS 6.5 生产环境编译安装LNMP
  3. 如何在服务器上搭建git服务器
  4. Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper
  5. framework4.0注册到IIS
  6. 用 JavaScript 修改样式元素
  7. ViewPager+Fragment的结合使用,实现QQ界面的理解
  8. pwn学习之二
  9. [Swift]LeetCode609. 在系统中查找重复文件 | Find Duplicate File in System
  10. Windows中通过命令行新建文件夹、新建文件,和一些常用命令
  11. union的特性,去重与不去重
  12. Android--手势及触摸事件的注意点(一)
  13. UE4:四种加载资源的方式
  14. Error Code: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT.
  15. ThinkPHP实现登陆功能
  16. SpringBoot启动和停止脚步
  17. C# 中使用正则表达式验证电话号码、手机号、身份证号
  18. vue router菜单 存在点哪个但还是会显示active
  19. vue---class和style的基本用法
  20. SST:Single-Stream Temporal Action Proposals论文笔记

热门文章

  1. Day 6 Linux基础之正文处理、vi编辑和系统初始化和服务
  2. Redhat 5 无法安装elfutils-libelf-devel-0.137问题
  3. 【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】
  4. 【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement
  5. 【转载】图说OOP基础(一)
  6. ZOJ 3230 Solving the Problems(数学 优先队列啊)
  7. 前端编程提高之旅(五)----写给大家看的css书
  8. mysql insert操作
  9. Swift中字符串转化为Class的方法
  10. java的自定义异常类