developer.android.com/training bitmapfun项目

时间:2013-04-19 16:05:18

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

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

  1. 打开wifi - >启动应用 - >下载图像(工作正常)。
  2. 关闭app(后退按钮),停用wifi - >激活数据网络 - >重新启动应用程序(仍然工作正常)。
  3. 在下载所有图像之前,我关闭应用程序(后退按钮) - >停用数据网络 - >激活wifi。在此步骤之后,当我重新启动应用程序时,图像不会下载。
  4. 在logcat中,我看到所有图像都在imageWorker的cancelPotentialWork()中被取消,它们永远不会启动。我的猜测是,之前的bitmapworkerTask(负责下载)正在发生一些事情,并且与新任务发生冲突。在我按下的应用程序中,我清除了所有缓存。但这不是问题的原因,因为我也测试了原始bitmapfun中的相同场景,问题也出现了!我该如何解决这个问题?我还将项目的多线程更改为单个线程!有没有办法清除所有imageview引用并取消所有正在运行的任务?

    对不起我的英语,并且没有提供有关bitmapfun项目性质的更多信息,但它会非常扩展我的问题!向我提问!

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

    Edit2(附加帮助):当我开始没有问题的活动时,第一张图片的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...
    

    当我开始有问题的活动时,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永远不会启动?根据代码序列,这是应该执行的下一部分!至少有任何人想知道我应该在哪里搜索错误吗?

1 个答案:

答案 0 :(得分:2)

发生什么事你没关系。因为ImageFetcher在OnCreate()时加载图像,但是由网络取消激活取消。它不包含自动重启代码。因此,如果您想要加载自动重启,请添加代码以侦测网络的状态更改。我觉得它不敏感。只需让用户通过点击刷新按钮等来重新启动它。