android - developer.android.com/training bitmapfun 项目

标签 android gridview android-asynctask android-lru-cache

我正在使用 bitmapfun我的应用程序中的项目(),当我测试这个时,我发现了一个问题。重现此问题的步骤如下:

  1. 打开 wifi -> 启动应用程序 -> 下载图片(它工作正常)。
  2. 关闭应用程序(后退按钮),停用 wifi -> 激活数据网络 -> 重新启动应用程序(仍然工作正常)。
  3. 在下载所有图像之前,我关闭应用程序(后退按钮)-> 停用数据网络-> 激活 wifi。完成此步骤后,当我重新启动应用程序时,图像不会下载。

在 logcat 中,我看到所有图像都在 imageWorker 的 cancelPotentialWork() 中被取消,并且它们从未启动。我的猜测是之前的 bitmapworkerTask(负责下载)发生了一些事情,并且与新任务发生了冲突。在我的应用程序中,当 按下我清除所有缓存。但这不是问题的原因,因为我在原始bitmapfun中也测试了相同的场景,问题也出现了!我该如何解决这个问题?我也改了多线程将项目整合到一个线程中!是否有任何可能的方法来清除所有 imageview 引用并取消所有正在运行的任务?

抱歉我的英语不好,没有提供更多关于 bitmapfun 项目性质的信息,但这将大大扩展我的问题!问我任何问题!

编辑:为了重现问题,最好在每次使用菜单选项离开 Activity 时清除缓存。此外,如果您按照步骤 1-3 执行一次,则不确定是否会出现该问题。也许你必须重复它们!

Edit2(其他帮助):当我毫无问题地开始 Activity 时,第一张图片的 logcat 如下:

04-24 02:31:56.400: D/ImageWorker(25625): doInBackground - starting work
04-24 02:31:56.400: D/ImageFetcher(25625): processBitmap - https://lh3.googleusercontent.com/--L0Km39l5J8/URquXHGcdNI/AAAAAAAAAbs/3ZrSJNrSomQ/s160-c/Antelope%252520Butte.jpg
04-24 02:31:56.400: D/ImageFetcher(25625): processBitmap, not found in http cache, downloading...

当我开始有问题的 Activity 时,logcat 是这样的:

04-24 02:28:07.970: D/ImageWorker(24014): cancelPotentialWork - cancelled work for https://lh3.googleusercontent.com/--L0Km39l5J8/URquXHGcdNI/AAAAAAAAAbs/3ZrSJNrSomQ/s160-c/Antelope%252520Butte.jpg

为什么在第二种情况下调用 cancelPotentialWork 后 doInBackground 永远不会启动?根据代码的顺序,这是应该执行的下一部分!至少有人知道我应该在哪里搜索错误吗?

最佳答案

发生在你身上的事没关系。因为 ImageFetcher 在 OnCreate() 时加载图片,但是被网络 deactivate 取消了。它不包含自动重启代码。所以如果你想要加载自动重启,添加代码来检测网络的状态变化。我认为它不敏感。只需让用户通过单击诸如刷新按钮等之类的东西来重新启动它。

关于android - developer.android.com/training bitmapfun 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108878/

相关文章:

java - native 浏览器和 Android 应用程序之间是否可以交互?

html - Responsive Layout 收缩时布局、媒体查询和网格的问题

带有进度条和 GridView 的 Android 图像下载器(Android 运行时)

android - 如何在android中检索视频缩略图

android - Android 中循环中的 AsyncTask

android - 使用支持lib依赖性v7:26.1.0时发生Gradle dex问题

android - 不能放双 SharedPreferences

android - Fragment 中的 Asynctask 生命周期

android - AsyncTask 返回值

android - 如何在 intent-filter 的数据标签中指定方案特定部分?