我有一个奇怪的问题。我正在使用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.
在您的案例中,Low Memory: No more background processes
是一个致命的泄露。设备内存不足。处理步骤当它这样做时,它会停止进程。它按以下顺序停止它们:
- 没有任何活动或服务的进程,即放在后台并保持运行的应用程序,以防用户再次需要它们。
- 具有后台服务的进程,如检查电子邮件。
- 具有后台下载或播放音乐播放器等前台服务的进程。
- 具有前台活动的进程,即正在使用的应用程序。
显然你的应用程序加载了太多的位图,耗尽了所有的内存。系统首先停止所有不需要的东西,但是当你继续加载位图时,它也必须杀死那些需要的东西。后台下载服务优先,因为它在上面的第三种情况中。
你只需要确保你永远不会同时在内存中有很多位图。请注意,闪存相当快,使用大量内存会降低设备本身的速度,所以在内存中保留显示的位图和最近使用的几个位图不太可能有任何帮助。