Android学习之七牛(二)——初始化设置和上传文件基本用法

虽然官方文档说明的比较详细了,我还是决定自己记录一下,可以较好的梳理条理,加深理解

转载请注明出处
[我的博客]http://www.lostbug.cn

  • 初始化
    一般情况下直接使用默认设置,不用单独配置。 可以配置超时时长、分片上传阀值等。
Configuration config = new Configuration.Builder()
                    .chunkSize(256 * 1024)  //分片上传时,每片的大小。 默认 256K
                    .putThreshhold(512 * 1024)  // 启用分片上传阀值。默认 512K
                    .connectTimeout(10) // 链接超时。默认 10.responseTimeout(60) // 服务器响应超时。默认 60.recorder(recorder)  // recorder 分片上传时,已上传片记录器。默认 null
                    .recorder(recorder, keyGen)  // keyGen 分片上传时,生成标识符,用于片记录器区分是那个文件的上传记录
                    .zone(Zone.zone0) // 设置区域,指定不同区域的上传域名、备用域名、备用IP。默认 Zone.zone0
                    .build();
// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
UploadManager uploadManager = new UploadManager(config);
  • 上传文件
    七牛上传文件主要用到两个方法:
    一、 UploadManager.put(data, key, token, handler, options);
 /**
  * UploadManager.put参数说明:
  *
  *@data                  byte[]/String/File    数据,可以是byte数组,文件路径,文件。
  *@key                   String                保存在服务器上的资源唯一标识。请参考键值对。
  *@token                 String                服务器分配的token。
  *@completionHandler     UpCompletionHandler   上传回调函数,必填。
  *@options               UploadOptions         如果需要进度通知、crc校验、中途取消、指定mimeType则需要填写相应字段,详见UploadOptions参数说明。
         */
   二、 UploadOptions(params, mimeType, checkCrc, progressHandler, cancellationSignal);
    /**
     * UploadOptions参数说明:
     * 
     *参数                   类型                   说明
     *params               Map<String, String>  自定义变量,key必须以 x: 开始。
     *mimeType             String               指定文件的mimeType。
     *checkCrc             boolean              是否验证上传文件。
     *progressHandler      UpProgressHandler    上传进度回调。
     *cancellationSignal   UpCancellationSignal 取消上传,当isCancelled()返回true时,不再执行更多上传。
     */
现在就比较清楚了

下面主要是各种上传姿势了
- 简单上传

// 简单上传
// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
UploadManager uploadManager = new UploadManager();
data = <File对象、或 文件路径、或 字节数组>
String key = <指定七牛服务上的文件名,或 null>;
String token = <从服务端SDK获取>;
uploadManager.put(data, key, token,
 /**
  * UpCompletionHandler参数说明
  * 
  *@key        即uploadManager.put(file, key, ...)方法指定的key。
  *@info       http请求的状态信息等,可记入日志。isOK()返回 true表示上传成功。
  *@response   七牛反馈的信息。可从中解析保存在七牛服务的key等信息,具体字段取决于上传策略的设置。
  */
new UpCompletionHandler() {
    @Override
    public void complete(String key, ResponseInfo info, JSONObject res) {
        //  res 包含hash、key等信息,具体字段取决于上传策略的设置。 
        Log.i("qiniu", key + ",\r\n " + info + ",\r\n " + res);
    }
}, null);
  • 记录上传进度
 //记录上传进度
    private void uploadProgress() {

        uploadManager.put(data, key, token, handler,
                new UploadOptions(null, null, false,
                        new UpProgressHandler() {
                            /**
                             * @param key      即uploadManager.put(file, key, ...)方法指定的key
                             * @param percent  进度
                             */
                            public void progress(String key, double percent) {
                                Log.i("qiniu", key + ": " + percent);
                            }
                        }, null));

    }
  • 取消上传
    内部代码会检测UpCancellationSignal##isCancelled()的返回值,当其返回true时,将停止上传。 可外部维护一个变量isCancelled,当点击取消按钮时,设置isCancelled = true;。如:
// 初始化、执行上传
private volatile boolean isCancelled = false;

uploadManager.put(data, key, token,handler,
    new UploadOptions(null, null, false, progressHandler,
        new UpCancellationSignal(){
            public boolean isCancelled(){
                return isCancelled;
            }
        }));


// 点击取消按钮,让 UpCancellationSignal##isCancelled() 方法返回 true ,以停止上传
private void cancell() {
    isCancelled = true;
}
  • 记录断点

分片上传中,可将各个已上传的块记录下来,再次上传时,已上传的部分不用再次上传。 断点记录类需实现 com.qiniu.android.storage.Recorder 接口。已提供保存到文件的 FileRecorder 实现。

String dirPath = <断点记录文件保存的文件夹位置>
Recorder recorder = new FileRecorder(dirPath);


//默认使用 key 的url_safe_base64编码字符串作为断点记录文件的文件名。
//避免记录文件冲突(特别是key指定为null时),也可自定义文件名(下方为默认实现):
KeyGenerator keyGen = new KeyGenerator(){
    public String gen(String key, File file){
        // 不必使用url_safe_base64转换,uploadManager内部会处理
        // 该返回值可替换为基于key、文件内容、上下文的其它信息生成的文件名
        return key + "_._" + new StringBuffer(file.getAbsolutePath()).reverse();
    }
};

// 重用 uploadManager。一般地,只需要创建一个 uploadManager 对象
//UploadManager uploadManager = new UploadManager(recorder);  // 1
//UploadManager uploadManager = new UploadManager(recorder, keyGen); // 2
// 或 在初始化时指定:
Configuration config = new Configuration.Builder()
                    // recorder 分片上传时,已上传片记录器
                    // keyGen 分片上传时,生成标识符,用于片记录器区分是那个文件的上传记录
                    .recorder(recorder, keyGen)  
                    .build();

UploadManager uploadManager = new UploadManager(config);

uploadManager.put(data, key, ...)

初始化设置和上传文件的基本用法就记录到这啦!

ActivityManagerAndroid系统中非常重要的一个组件,负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们将深入了解ActivityManager框架的实现原理。 ## Activity的启动过程 在Android系统中,Activity是应用程序中最基本的界面单元。当用户点击应用程序的图标时,ActivityManager会负责启动应用程序并启动相应的Activity。下面是Activity的启动过程: 1. 应用程序进程启动:ActivityManager会创建一个新的进程来运行应用程序。 2. 应用程序的Application对象创建:在应用程序进程启动之后,ActivityManager会负责创建应用程序的Application对象。 3. Activity对象创建:当用户点击应用程序的图标并选择启动Activity时,ActivityManager会负责创建相应的Activity对象。 4. Activity的onCreate方法调用:ActivityManager会调用Activity对象的onCreate方法,完成Activity的初始化工作。 5. Activity的onStart方法调用:ActivityManager会调用Activity对象的onStart方法,将Activity显示给用户。 6. Activity的onResume方法调用:ActivityManager会调用Activity对象的onResume方法,让Activity成为用户交互的焦点。 7. Activity的生命周期结束:当用户退出Activity时,ActivityManager会负责销毁Activity对象。 ## 进程管理 在Android系统中,每个应用程序都运行在一个独立的进程中。ActivityManager负责管理所有进程,以确保系统的稳定和性能。 当应用程序被启动时,ActivityManager会为其创建一个新的进程并分配一定的内存资源。如果此时系统内存不足,ActivityManager会根据一定的策略来回收一些进程内存,以确保系统正常运行。 ActivityManager还负责监控进程的CPU使用情况和内存使用情况。如果一个进程的CPU使用率过高或者内存使用量过大,ActivityManager会考虑回收该进程的资源,以避免系统崩溃。 ## 任务管理 在Android系统中,任务是指一组相关的Activity。当用户启动一个应用程序时,ActivityManager会创建一个新的任务,并将应用程序的第一个Activity加入到该任务中。 当用户从一个Activity切换到另一个Activity时,ActivityManager会将前一个Activity加入到任务的后台,并将新的Activity显示给用户。当用户点击返回键时,ActivityManager会将当前Activity从任务中移除,并将前一个Activity重新显示给用户。 需要注意的是,当应用程序中的所有Activity都被销毁时,该应用程序的任务也会被销毁。这是因为Android系统中的Activity都是基于任务的,一个应用程序的所有Activity都属于同一个任务。 ## 总结 ActivityManagerAndroid系统中非常重要的一个组件,它负责管理系统中所有Activity的生命周期、进程管理、任务管理等。在本篇文章中,我们深入了解了ActivityManager的实现原理。熟悉ActivityManager的工作原理对于开发高质量的Android应用程序非常重要。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值