Android「后台下载」Feb.24小记
2014-02-24 17:33
399 查看
参考了CSDN上的这个文章(HERE),之前只是新开一个线程:
后来看了人家写的那个例子,想把人家Service里面的东西直接复制到我的Thread里面,发现老问题,很多对象是在Activity里定义的,不能在Thread里调用。
于是想到用Thread直接调用人家的Service,发现Intent是在Activity之间传值的(后来发现也可以在Activity和Service之间传值),不能在Thread和Service之间传值。
此刻心中已经又万匹草泥马呼啸而过了,但还是决定用SharedPreferences传值。结果发现,这个类需要用到context,which,Thread里面还是没有。。。
我只想说Thread里面写东西真是越少越好。。
最后直接在Activity里调用了Service,并且用Intent传值,如下:
有人要问我为什么不一开始就在Activity里调用Service呢?因为4.0以后网络操作都是不能放在主线程里的,要单开线程,所以没有考虑到。
但是转念一想,那为什么作者的程序可以呢?仔细看了一下,发现作者的新线程是这么写的,在Service里面!值得学习。
另外,这是下载完成后安装的功能:
End.
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.
相关文章推荐
- Android Studio v0.4.2 + PhoneGap v3.3.0-0.19.6
- mtk android settings
- Android进程与线程详解
- android 4.4.2 (ART模式)子线程中调用GetFieldID返回0
- Android Activity学习笔记——Activity的启动和创建
- Android NDK开发----- Java与C互相调用实例详解
- 终止Android中HandlerThread的方法
- android.view.ViewGroup$LayoutParams cannot be cast to android.widget.TableRow$LayoutParams
- Android canvas bug
- 相对布局的属性
- Android图片与内存优化
- Android popupWindow响应back按键并关闭
- 深入探索Android Service
- Android销毁线程的方式
- android侧边栏
- Android线程的创建与销毁
- Android Theme和Style区别联系
- Android----签名记录
- Android开发之InstanceState详解(转)
- 向android模拟器打电话发短信的简单方法