我对Android开发相当新,并且有很多值得关注的东西。 我有一个概念性的问题。在IOS中看起来相当简单,我无法在Android中找到答案。
以下是我想要完成的事情:
我需要遍历设备照片并将其一次发布到一些网络服务。
问题是,在通过MediaStore进行迭代时,它似乎锁定了当前线程,如果我在主UI线程上执行,那么显然,图像会上传,但我不会看到任何内容屏幕直到所有上传完成。为了克服这个问题,我试图启动一个新的AsyncTask并以这种方式迭代。对于上传,我使用loopj库,它只能在从主UI线程开始上传时异步上传。由于从AsychTask运行的线程开始上传,我被迫使用同步客户端,在上传完成之前不会返回响应句柄,这意味着我永远无法取消当前的上传操作。为了解决这个问题,我试图从AsynchTask迭代器中为每个图像上传产生新的意图并等待它返回,直到进入下一个具有可怕外观的迭代器周期 - Intents屏幕弹出并向下折叠动画太烦人,看起来很可怕。 Aghhh - 我所描述的解决方案非常复杂。我确定,我忽略了一些简单的愚蠢。 任何想法都将受到高度赞赏!
P.S。代码可以在这里找到: https://github.com/echowaves/Echowaves.android/blob/master/app/src/main/java/com/echowaves/android/UploadProgressActivity.java https://github.com/echowaves/Echowaves.android/blob/master/app/src/main/java/com/echowaves/android/UploadProgressDetailsActivity.java
答案 0 :(得分:0)
我有一个有点工作的解决方案。我只是迭代AsynchTask中的MediaStore资产并在onProgressUpdate中启动异步上传,而且,因为(如果我理解正确的话)onProgressUpdate在主UI线程上工作,更新UI就像魅力一样工作,而不是为每次上传启动新意图。但是,仍然必须使用设置标志来表示上传当前处于活动状态,睡眠时间为100毫秒,检查标志,并在上传完成后继续播放光标中的下一个图像。
最新代码在github上更新: https://github.com/echowaves/Echowaves.android/blob/master/app/src/main/java/com/echowaves/android/UploadProgressActivity.java