今天跟大家一起分享下Android源码开发中比较难的一个环节,可能很多人看到这个标题就会感觉头很大,的确如果没有良好的编码能力和逻辑思维,这块是很难搞明白的,前面2次总结中已经为大家分享过有关技术的一些基本要领,我们先一起简单回顾下它的基本原理。

  什么是多线程下载?

  多线程下载其实就是迅雷,BT一些下载原理,通过多个线程同时和服务器连接,那么你就可以榨取到较高的带宽了,大致做法是将文件切割成N块,每块交给单独一个线程去下载,各自下载完成后将文件块组合成一个文件,程序上要完成做切割和组装的小算法。下面我们开始分析程序:

  package cn.demo.DBHelper;

  import android.content.Context;

  import android.database.sqlite.SQLiteDatabase;

  import android.database.sqlite.SQLiteOpenHelper;

  /**

  * 建立一个数据库帮助类

  */

  public class DBHelper extends SQLiteOpenHelper {

  //download.db-->数据库名

  public DBHelper(Context context) {

  super(context, "download.db", null, 1);

  }

  /**

  * 在download.db数据库下创建一个download_info表存储下载信息

  */

  @Override

  public void onCreate(SQLiteDatabase db) {

  db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, thread_id integer, "

  + "start_pos integer, end_pos integer, compelete_size integer,url char)");

  }

  @Override

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

  }

  }

  数据库操作要借助单例和同步,来保证线程的执行顺序,以免多个线程争相抢用sqlite资源导致异常出现

  import android.content.Context;

  import android.database.sqlite.SQLiteDatabase;

  import android.database.sqlite.SQLiteOpenHelper;

  /**

  * 建立一个数据库帮助类

  */

  public class DBHelper extends SQLiteOpenHelper {

  //download.db-->数据库名

  public DBHelper(Context context) {

  super(context, "download.db", null, 1);

  }

  /**

  * 在download.db数据库下创建一个download_info表存储下载信息

  */

  @Override

  public void onCreate(SQLiteDatabase db) {

  db.execSQL("create table download_info(_id integer PRIMARY KEY AUTOINCREMENT, thread_id integer, "

  + "start_pos integer, end_pos integer, compelete_size integer,url char)");

  }

  @Override

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

  }

  }

  想要了解更多有关android 源码的详情可以查询天地会。

更多相关文章

  1. android之socket编程实例
  2. Android(安卓)多个 Activity 调用 跳转
  3. Android(安卓)Android.mk文件各种模版参考
  4. Android心得3.4--用Pull解析器解析xml文件内容.doc
  5. android JNI C代码对sdcard中文件的操作
  6. android远程控制(一)----发现驱动文件里代码含义
  7. Android(安卓)NDK之二:创建NativeActivity
  8. Mtk Android(安卓)app 默认激活设备管理器
  9. Android(安卓)图形架构

随机推荐

  1. Android(安卓)Beam 告诉我们未来近距离数
  2. android 下使用GPS 无法获取经纬度的解决
  3. 说说在 Android(安卓)中如何接收系统广播
  4. Android:四大组件之-----广播(Broadcast)
  5. Android子菜单和选项菜单与上下文菜单的
  6. android listview或者ScrollView 去除顶
  7. Android(安卓)TextView字体样式设置
  8. 第26章、OnKeyListener键盘事件(从零开始
  9. 2013新春奉送:Android摄像头开发完美demo-
  10. Android(安卓)数据库SQLite更新升级问题