@@ -18,7 +18,7 @@ title: Android SDK使用文档
1818
1919Android SDK只包含了最终用户使用场景中的必要功能。相比服务端SDK而言,客户端SDK不会包含对云存储服务的管理和配置功能。
2020
21- 该SDK支持不低于2.1的Android版本 。
21+ 该SDK支持不低于2.2的Android版本(api8) 。
2222
2323<a name =" use-scenario " ></a >
2424## 使用场景
@@ -36,7 +36,7 @@ Android SDK只包含了最终用户使用场景中的必要功能。相比服务
3636<a name =" load " ></a >
3737## 接入SDK
3838
39- > TODO: 如何将该SDK整合到工作项目中?使用jar包?拷贝源文件?
39+ 该SDK没有包含工程文件,这时需要自己新建一个工程,然后将src里面的代码复制到代码目录里面。
4040
4141<a name =" upload " ></a >
4242## 上传文件
@@ -53,7 +53,7 @@ Android SDK只包含了最终用户使用场景中的必要功能。相比服务
5353```
5454public void put(String key,
5555 InputStreamAt isa,
56- PutExtra extra,
56+ com.qiniu.io. PutExtra extra,
5757 JSONObjectRet ret);
5858```
5959
@@ -64,7 +64,7 @@ public void put(String key,
6464key | String | 将保存为的资源唯一标识。请参见[ 关键概念:键值对] ( http://developer.qiniu.com/docs/v6/api/overview/concepts.html#key-value ) 。
6565isa | InputStreamAt | 待上传的本地文件。
6666extra | PutExtra | 额外配置项,用于精确控制上传行为。请参见[ 高级设置] ( #upload-config ) 。
67- ret | JSONObjectRet | 开发者需实现该接口以获取上传进度和上传结果。<br >若上传成功,该接口中的` onSuccess() ` 方法将被调用。否则` onFailure() ` 方法将被调用。
67+ ret | JSONObjectRet | 开发者需实现该接口以获取上传进度和上传结果。<br >若上传成功,该接口中的` onSuccess() ` 方法将被调用。否则` onFailure() ` 方法将被调用。 ` onProgress() ` 会在文件上传量发生更改的时候被调用,而且处于MainThread环境之中,可以直接操作ProgressBar之类的进度提示控件。
6868
6969表单上传的示例代码请参见SDK示例中[ MyActivity.doUpload()] ( https://github.com/qiniu/android-sdk/blob/develop/src/com/qiniu/demo/MyActivity.java ) 方法的实现。
7070
@@ -82,14 +82,22 @@ ret | JSONObjectRet | 开发者需实现该接口以获取上传进度和上传
8282
8383开发者可以基于分片上传机制实现断点续上传功能。
8484
85- > TODO: 该SDK是否已经支持断点续上传功能?基本的要求是可反馈完整的进度信息给开发者进行持久化,并且在上传时可以传入之前持久化的上传进度信息。
85+ ```
86+ class ResumableIO {
87+ public static void put(String key,
88+ InputStreamAt isa,
89+ com.qiniu.resumableio.PutExtra extra,
90+ JSONObjectRet ret);
91+ }
92+ ```
93+ 具体用法和` IO.put ` 的类似。
8694
8795<a name =" upload-concurrency " ></a >
8896### 上传中的并发性
8997
9098分片上传机制也提供了对一个文件并发上传的能力。
9199
92- > TODO: 现在这个SDK可以设置并发数量吗?
100+ > 目前底层采用AsyncTask来完成异步操作,系统底层默认是使用单线程来串行运行所有的AsyncTask,所以如果需要真正意义上的多线程上传,需要将AsyncTask放入线程池, 详细操作请参考 [ 这里 ] ( http://developer.android.com/reference/android/os/AsyncTask.html )
93101
94102<a name =" upload-config " ></a >
95103### 高级设置
@@ -110,14 +118,6 @@ extra.params.put("x:a", "bb"); // 设置一个自定义变量
110118
111119对这些后续动作的合理组合使用可以大幅降低业务流程复杂度,并提升业务的健壮性。
112120
113- 举例说明,如果用户上传的是一个xxx格式的视频文件,开发者可以设置让该视频文件上传完成后转码为设定的目标格式。对应的设置项如下所示:
114-
115- 参数名称 | 参数内容 | 说明
116- :---: | :----: | :---
117- persistentOp | TODO: xxxxx | 符合数据处理规范的指令。这个指令表示要将码率调整为xxx,分辨率调整为xxx。
118- persistentNotifyUrl | TODO: xxxxx | 结果通知地址,通常是向业务服务器发送该指定的请求。
119-
120- > TODO:填写真实有效的一个示例。
121121
122122完整的可设置参数和规格请参见[ 上传策略规格] ( http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html ) 。
123123
@@ -138,4 +138,6 @@ persistentNotifyUrl | TODO:xxxxx | 结果通知地址,通常是向业务服务
138138<a name =" thread-safety " ></a >
139139## 线程安全性
140140
141- 此 Android SDK 不是线程安全的,请勿在没有保护的情况下跨线程使用。
141+ Android 一般的情况下会使用一个主线程来控制UI,非主线程无法控制UI,在Android4.0+之后必须不能在主线程完成网络请求,
142+ 该SDK是根据以上的使用场景设计,所有网络的操作均使用AsyncTask异步运行,所有回调函数又都回到了主线程(onSuccess, onFailure, onProgress),在回调函数内可以直接操作UI控件。
143+ 如果您没有额外使用` new Thread() ` 等命令,该SDK将不会发生线程安全性问题。
0 commit comments