0

我有一个奇怪的问题。我正在使用 AsyncTask 下载一些图像。

有时我的应用程序会默默地“崩溃”

I/System.out(28632): Downloaded :  135443
D/szipinf (28632): Initializing inflate state
I/ActivityManager( 1740): Process com.zibi.hypercolor.next (pid 28632) has died.
E/InputDispatcher( 1740): channel '4056a838 com.zibi.hypercolor.next/com.zibi.hypercolor.next.WallpaperSettingsList (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
E/InputDispatcher( 1740): channel '4056a838 com.zibi.hypercolor.next/com.zibi.hypercolor.next.WallpaperSettingsList 
(server)' ~ Channel is unrecoverably broken and will be disposed!

I/ActivityManager( 1740): Low Memory: No more background processes.
4

1 回答 1

0

在你的情况下,这Low Memory: No more background processes是一个死的赠品。设备内存不足。当它发生时,它会停止进程。它按以下顺序停止它们:

  1. 没有任何活动或服务的进程,即被置于后台并保持运行以防用户再次需要它们的应用程序。
  2. 具有后台服务的进程,例如检查电子邮件。
  3. 具有前台服务的进程,例如后台下载或播放音乐播放器。
  4. 具有前台活动的进程,即正在使用的应用程序。

显然您的应用程序加载了太多位图并耗尽了所有内存。系统首先停止所有不需要的东西,但是当你继续加载位图时,它也必须杀死需要的东西。后台下载服务先行,因为是上面的第三种情况。

您只需要确保内存中不会同时有很多位图。请注意,闪存相当快,并且使用大量内存会降低设备本身的速度,因此在显示中保留更多位图和在内存中保留一些最近使用的位图不太可能有任何帮助。

于 2013-04-23T06:07:34.400 回答