Почему я получаю сообщение об ошибке WIN DEATH: Window{45087aa8 com.gigabites.fortune/com.gigabites.fortune.BuildActivity paused=false}?

Я огляделся и, судя по сообщениям других людей, думаю, что эта ошибка связана с тем, что моя активность может превышать пределы кучи. Я манипулирую некоторыми растровыми изображениями и применяю методы для уменьшения размера кучи моих приложений, например, не использую Bitmap.createBitmap() и вместо этого увеличиваю крошечное растровое изображение как пустое растровое изображение для изменения. Я также использую параметры inPurgable для созданного растрового изображения. Вот мой код.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i("INFO","At 2###########");
    setContentView(R.layout.landingscreen);
    Thread thread = new Thread(this);
    thread.start();

}

Моя деятельность реализует Runnable, и это run()

    public void run() {
    BitmapFactory.Options factoryOptions = new BitmapFactory.Options();
    factoryOptions.inPurgeable = true;
    factoryOptions.inInputShareable = true;
    Bitmap tempCBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.c6,factoryOptions);
    cBitmap = tempCBitmap.copy(Bitmap.Config.ARGB_8888, true);
    PrepareLines();
    Bitmap dBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dummy);
    Bitmap textLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
    Bitmap workLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
    canvas = new Canvas(textLayer);
    canvas.drawText(lineOne, xCenter, yCenter, paint);
    canvas.drawText(lineTwo, xCenter, yCenter+20, paint);
    canvas.drawText(lineThree, xCenter, yCenter+40, paint);

    Camera mCamera = new Camera();
    Matrix mMatrix = new Matrix();
    mCamera.save();
    mCamera.rotateY(yDegreeRotate+8);
    mCamera.getMatrix(mMatrix);
    mCamera.restore();

    mMatrix.preTranslate(-xCenter, (-yCenter)-verticalOffset);
    mMatrix.postTranslate(xCenter, yCenter+verticalOffset);
    Log.i("INFO","At before first draw ###########");


    canvas.setBitmap(workLayer);
    canvas.drawBitmap(Bitmap.createBitmap(textLayer,0,0,xCenter,h), mMatrix, paint);

    canvas.setBitmap(cBitmap);
    canvas.drawBitmap(workLayer, new Matrix(), paint);

    mMatrix = new Matrix();
    workLayer = Bitmap.createScaledBitmap(dBitmap, w, h, false);
    dBitmap = null;
    System.gc();

    mCamera.rotateY(-yDegreeRotate);
    mCamera.getMatrix(mMatrix);
    // WIN DEATH HERE
    mCamera.restore();
    // WIN DEATH HERE;
    mMatrix.preTranslate(0 , (-yCenter)-verticalOffset);
    mMatrix.postTranslate(xCenter, (yCenter)+verticalOffset);
    Log.i("INFO","At before second draw ###########");



    canvas.setBitmap(workLayer);
    canvas.drawBitmap(Bitmap.createBitmap(textLayer,xCenter,0,w-xCenter,h), mMatrix, paint);

    canvas.setBitmap(cBitmap);
    canvas.drawBitmap(workLayer, new Matrix(), paint);

    Log.i("INFO","At 20, string measures: "+paint.measureText(message));
    canvas = null;
    workLayer = null;
    textLayer = null;
    System.gc();
    makeFileAndIntent();

}

Вот моя информация о LogCat:

01-11 04:05:26.615: D/AndroidRuntime(314): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
01-11 04:05:26.615: D/AndroidRuntime(314): CheckJNI is ON
01-11 04:05:26.705: D/AndroidRuntime(314): --- registering native functions ---
01-11 04:05:27.095: D/AndroidRuntime(314): Shutting down VM
01-11 04:05:27.095: D/dalvikvm(314): Debugger has detached; object registry had 1 entries
01-11 04:05:27.105: I/AndroidRuntime(314): NOTE: attach of thread 'Binder Thread #3' failed
01-11 04:05:27.415: D/AndroidRuntime(322): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
01-11 04:05:27.415: D/AndroidRuntime(322): CheckJNI is ON
01-11 04:05:27.515: D/AndroidRuntime(322): --- registering native functions ---
01-11 04:05:27.905: I/ActivityManager(59): Force stopping package com.gigabites.fortune uid=10040
01-11 04:05:27.905: I/ActivityManager(59): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.gigabites.fortune/.BuildActivity }
01-11 04:05:27.925: I/ActivityManager(59): Start proc com.gigabites.fortune for activity com.gigabites.fortune/.BuildActivity: pid=328 uid=10040 gids={1015}
01-11 04:05:27.945: W/WindowManager(59): HistoryRecord{450b8ef0 com.gigabites.fortune/.BuildActivity} failed creating starting window
01-11 04:05:27.945: W/WindowManager(59): android.view.InflateException: Binary XML file line #24: Error inflating class <unknown>
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.createView(LayoutInflater.java:513)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563)
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.inflate(LayoutInflater.java:385)
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2165)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2220)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.internal.policy.impl.PhoneWindow.getDecorView(PhoneWindow.java:1407)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.internal.policy.impl.PhoneWindowManager.addStartingWindow(PhoneWindowManager.java:894)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.server.WindowManagerService$H.handleMessage(WindowManagerService.java:9007)
01-11 04:05:27.945: W/WindowManager(59):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 04:05:27.945: W/WindowManager(59):    at android.os.Looper.loop(Looper.java:123)
01-11 04:05:27.945: W/WindowManager(59):    at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:570)
01-11 04:05:27.945: W/WindowManager(59): Caused by: java.lang.reflect.InvocationTargetException
01-11 04:05:27.945: W/WindowManager(59):    at android.widget.FrameLayout.<init>(FrameLayout.java:79)
01-11 04:05:27.945: W/WindowManager(59):    at java.lang.reflect.Constructor.constructNative(Native Method)
01-11 04:05:27.945: W/WindowManager(59):    at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
01-11 04:05:27.945: W/WindowManager(59):    at android.view.LayoutInflater.createView(LayoutInflater.java:500)
01-11 04:05:27.945: W/WindowManager(59):    ... 13 more
01-11 04:05:27.945: W/WindowManager(59): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x1010059 a=-1}
01-11 04:05:27.945: W/WindowManager(59):    at android.content.res.Resources.loadDrawable(Resources.java:1681)
01-11 04:05:27.945: W/WindowManager(59):    at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
01-11 04:05:27.945: W/WindowManager(59):    at android.widget.FrameLayout.<init>(FrameLayout.java:91)
01-11 04:05:27.945: W/WindowManager(59):    ... 17 more
01-11 04:05:27.955: D/AndroidRuntime(322): Shutting down VM
01-11 04:05:27.955: D/dalvikvm(322): Debugger has detached; object registry had 1 entries
01-11 04:05:27.975: I/dalvikvm(322): JNI: AttachCurrentThread (from ???.???)
01-11 04:05:27.975: I/AndroidRuntime(322): NOTE: attach of thread 'Binder Thread #3' failed
01-11 04:05:28.105: W/ActivityThread(328): Application com.gigabites.fortune is waiting for the debugger on port 8100...
01-11 04:05:28.135: I/System.out(328): Sending WAIT chunk
01-11 04:05:28.145: I/dalvikvm(328): Debugger is active
01-11 04:05:28.335: I/System.out(328): Debugger has connected
01-11 04:05:28.335: I/System.out(328): waiting for debugger to settle...
01-11 04:05:28.535: I/System.out(328): waiting for debugger to settle...
01-11 04:05:28.782: I/System.out(328): waiting for debugger to settle...
01-11 04:05:28.975: I/System.out(328): waiting for debugger to settle...
01-11 04:05:29.185: I/System.out(328): waiting for debugger to settle...
01-11 04:05:29.385: I/System.out(328): waiting for debugger to settle...
01-11 04:05:29.607: I/System.out(328): waiting for debugger to settle...
01-11 04:05:29.805: I/System.out(328): waiting for debugger to settle...
01-11 04:05:30.021: I/System.out(328): waiting for debugger to settle...
01-11 04:05:30.229: I/System.out(328): waiting for debugger to settle...
01-11 04:05:30.445: I/System.out(328): debugger has settled (1388)
01-11 04:05:33.015: I/INFO(328): At 2###########
01-11 04:05:34.585: I/ActivityManager(59): Displayed activity com.gigabites.fortune/.BuildActivity: 6668 ms (total 6668 ms)
01-11 04:05:37.678: I/INFO(328): At 1###########
01-11 04:05:37.785: D/dalvikvm(328): GC_EXTERNAL_ALLOC freed 1191 objects / 77104 bytes in 40ms
01-11 04:05:37.875: I/INFO(328): At 2###########
01-11 04:05:37.885: I/INFO(328): At 20, string measures: 653.0
01-11 04:05:37.925: D/dalvikvm(328): GC_EXTERNAL_ALLOC freed 360 objects / 16904 bytes in 35ms
01-11 04:05:37.985: D/dalvikvm(328): GC_EXTERNAL_ALLOC freed 47 objects / 1776 bytes in 35ms
01-11 04:05:38.055: I/INFO(328): At before first draw ###########
01-11 04:05:38.135: D/dalvikvm(328): GC_EXTERNAL_ALLOC freed 15 objects / 632 bytes in 30ms
01-11 04:05:38.196: D/dalvikvm(328): GC_EXPLICIT freed 12 objects / 424 bytes in 31ms
01-11 04:05:38.345: I/DEBUG(31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-11 04:05:38.345: I/DEBUG(31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
01-11 04:05:38.345: I/DEBUG(31): pid: 328, tid: 335  >>> com.gigabites.fortune <<<
01-11 04:05:38.345: I/DEBUG(31): signal 11 (SIGSEGV), fault addr deadbaad
01-11 04:05:38.345: I/DEBUG(31):  r0 00000000  r1 0000000c  r2 00000027  r3 00000000
01-11 04:05:38.345: I/DEBUG(31):  r4 00000000  r5 deadbaad  r6 00001728  r7 00000000
01-11 04:05:38.345: I/DEBUG(31):  r8 46d00d10  r9 4185ef74  10 002404e8  fp 4185ef70
01-11 04:05:38.345: I/DEBUG(31):  ip ffffffff  sp 46d00c80  lr afd154c5  pc afd11dc4  cpsr 40000030
01-11 04:05:38.415: I/DEBUG(31):          #00  pc 00011dc4  /system/lib/libc.so
01-11 04:05:38.415: I/DEBUG(31):          #01  pc 0000be1c  /system/lib/libc.so
01-11 04:05:38.415: I/DEBUG(31): code around pc:
01-11 04:05:38.415: I/DEBUG(31): afd11da4 1c2bd00b 2d00682d e026d1fb 2b0068db 
01-11 04:05:38.415: I/DEBUG(31): afd11db4 4e17d003 51a02001 4d164798 24002227 
01-11 04:05:38.415: I/DEBUG(31): afd11dc4 f7fb702a 2106ee14 ef10f7fc 05592380 
01-11 04:05:38.415: I/DEBUG(31): afd11dd4 6091aa01 1c116054 94012006 eab6f7fc 
01-11 04:05:38.415: I/DEBUG(31): afd11de4 2200a905 f7fc2002 f7fbeac2 2106ee00 
01-11 04:05:38.415: I/DEBUG(31): code around lr:
01-11 04:05:38.415: I/DEBUG(31): afd154a4 b0834a0d 589c447b 26009001 686768a5 
01-11 04:05:38.415: I/DEBUG(31): afd154b4 220ce008 2b005eab 1c28d003 47889901 
01-11 04:05:38.415: I/DEBUG(31): afd154c4 35544306 d5f43f01 2c006824 b003d1ee 
01-11 04:05:38.415: I/DEBUG(31): afd154d4 bdf01c30 0002ae7c 000000d4 1c0fb5f0 
01-11 04:05:38.415: I/DEBUG(31): afd154e4 43551c3d a904b087 1c16ac01 604d9004 
01-11 04:05:38.415: I/DEBUG(31): stack:
01-11 04:05:38.415: I/DEBUG(31):     46d00c40  00000015  
01-11 04:05:38.415: I/DEBUG(31):     46d00c44  afd1453b  /system/lib/libc.so
01-11 04:05:38.415: I/DEBUG(31):     46d00c48  afd405a0  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c4c  afd4054c  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c50  00000000  
01-11 04:05:38.426: I/DEBUG(31):     46d00c54  afd154c5  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c58  00000000  
01-11 04:05:38.426: I/DEBUG(31):     46d00c5c  afd1450d  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c60  afd41724  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c64  afd40328  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c68  00000000  
01-11 04:05:38.426: I/DEBUG(31):     46d00c6c  00001728  
01-11 04:05:38.426: I/DEBUG(31):     46d00c70  00000000  
01-11 04:05:38.426: I/DEBUG(31):     46d00c74  afd147ab  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c78  df002777  
01-11 04:05:38.426: I/DEBUG(31):     46d00c7c  e3a070ad  
01-11 04:05:38.426: I/DEBUG(31): #00 46d00c80  8086caa4  /system/lib/libdvm.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c84  80870eea  /system/lib/libdvm.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c88  afd418dc  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c8c  afd10510  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c90  afd40328  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c94  fffffbdf  
01-11 04:05:38.426: I/DEBUG(31):     46d00c98  afd40328  /system/lib/libc.so
01-11 04:05:38.426: I/DEBUG(31):     46d00c9c  afd41724  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31):     46d00ca0  0000a000  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00ca4  afd0be21  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31): #01 46d00ca8  afd40328  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31):     46d00cac  afd0be21  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31):     46d00cb0  418cb358  /dev/ashmem/dalvik-LinearAlloc (deleted)
01-11 04:05:38.435: I/DEBUG(31):     46d00cb4  80846dad  /system/lib/libdvm.so
01-11 04:05:38.435: I/DEBUG(31):     46d00cb8  00119ab8  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00cbc  00234078  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00cc0  44ef45a8  /dev/ashmem/mspace/dalvik-heap/2 (deleted)
01-11 04:05:38.435: I/DEBUG(31):     46d00cc4  8083d9b9  /system/lib/libdvm.so
01-11 04:05:38.435: I/DEBUG(31):     46d00cc8  000013fc  
01-11 04:05:38.435: I/DEBUG(31):     46d00ccc  00234608  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00cd0  44ef45a8  /dev/ashmem/mspace/dalvik-heap/2 (deleted)
01-11 04:05:38.435: I/DEBUG(31):     46d00cd4  00119ab8  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00cd8  afd417e0  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31):     46d00cdc  42c3d5f6  /data/dalvik-cache/system@[email protected]@classes.dex
01-11 04:05:38.435: I/DEBUG(31):     46d00ce0  4185ef7c  
01-11 04:05:38.435: I/DEBUG(31):     46d00ce4  afd0cd81  /system/lib/libc.so
01-11 04:05:38.435: I/DEBUG(31):     46d00ce8  00119ab8  [heap]
01-11 04:05:38.435: I/DEBUG(31):     46d00cec  afc008e3  /system/lib/libstdc++.so
01-11 04:05:38.855: I/BootReceiver(59): Copying /data/tombstones/tombstone_08 to DropBox (SYSTEM_TOMBSTONE)
01-11 04:05:38.875: D/Zygote(33): Process 328 terminated by signal (11)
01-11 04:05:38.955: D/dalvikvm(59): GC_FOR_MALLOC freed 2276 objects / 507544 bytes in 99ms
01-11 04:05:38.955: I/ActivityManager(59): Process com.gigabites.fortune (pid 328) has died.
01-11 04:05:38.965: I/WindowManager(59): WIN DEATH: Window{45087aa8 com.gigabites.fortune/com.gigabites.fortune.BuildActivity paused=false}
01-11 04:05:38.975: I/UsageStats(59): Unexpected resume of com.android.launcher while already resumed in com.gigabites.fortune
01-11 04:05:39.055: D/dalvikvm(59): GC_FOR_MALLOC freed 512 objects / 159856 bytes in 66ms
01-11 04:05:39.156: W/InputManagerService(59): Got RemoteException sending setActive(false) notification to pid 328 uid 10040

Размер кучи моего эмулятора Android составляет 24. Когда я запускаю это на своей яркой галактике, все работает нормально.

Вот мой XML для макета посадочного экрана

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" android:background="@color/maroon" android:gravity="center">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:background="@drawable/darkred_maroon_gradient" >

        <TextView
                    android:id="@+id/titlebar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="12sp"
                    android:textAppearance="?android:attr/textAppearanceSmall" android:text="@string/app_name" android:background="@drawable/darkred_maroon_gradient" android:paddingLeft="5dp" android:textColor="@color/yellow" android:typeface="monospace" android:gravity="left|center_vertical"/>
        <TextView
                    android:id="@+id/titlebar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textSize="12sp"
                    android:textAppearance="?android:attr/textAppearanceSmall" android:text="GiGA BiTES" android:gravity="right|center_vertical" android:paddingRight="5dp" android:textColor="@color/yellow" android:typeface="monospace"/>
    </LinearLayout>

    <TableLayout
        android:id="@+id/tableLayout1"
        android:weightSum="2"
        android:layout_width="match_parent"

        android:layout_height="match_parent" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="wrap_content" android:weightSum="2">

            <RelativeLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" android:layout_weight="1"
                android:gravity="center" android:layout_gravity="center">

                <ImageView
                    android:id="@+id/ncview"
                    android:onClick="onClick"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:src="@drawable/newcicon" android:scaleType="center" android:layout_centerHorizontal="true" android:paddingTop="3dp"/>
                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/newc"
                    android:onClick="onClick"
                    android:textAppearance="?android:attr/textAppearanceLarge" android:layout_centerInParent="true" android:textColor="@color/yellow"/>
            </RelativeLayout>
            <RelativeLayout 
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" android:layout_weight="1" android:gravity="center">
                <ImageView
                    android:id="@+id/scview"
                    android:onClick="onClick"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:src="@drawable/sendcicon" android:scaleType="center" android:layout_centerHorizontal="true"/>

                <TextView
                    android:onClick="onClick"
                    android:id="@+id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/sendc" 
                    android:textAppearance="?android:attr/textAppearanceLarge" android:layout_centerInParent="true" android:textColor="@color/yellow"/>

            </RelativeLayout>

        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" 
            android:layout_weight="1"
            android:weightSum="2">

            <RelativeLayout
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:orientation="vertical" android:layout_weight="1" android:gravity="center" android:layout_gravity="bottom">
                <ImageView
                    android:id="@+id/ctview"
                    android:onClick="onClick"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:scaleType="center"
                    android:src="@drawable/cticon" android:layout_centerHorizontal="true" android:paddingTop="25dp"/>
                <TextView
                    android:onClick="onClick"
                    android:id="@+id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/buytokens" 
                    android:textAppearance="?android:attr/textAppearanceLarge" android:layout_gravity="bottom|center_horizontal" android:layout_centerInParent="true" android:gravity="center" android:textColor="@color/yellow"/>
            </RelativeLayout>
            <RelativeLayout 
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:orientation="vertical" android:layout_weight="1" android:gravity="center">
                <ImageView
                    android:id="@+id/hview"
                    android:onClick="onClick"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:scaleType="center"
                    android:src="@drawable/helpicon" android:layout_centerHorizontal="true"/>
                <TextView
                    android:id="@+id/textView4"
                    android:onClick="onClick"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/help"
                    android:textAppearance="?android:attr/textAppearanceLarge" android:layout_centerInParent="true" android:textColor="@color/yellow"/>
            </RelativeLayout>


        </TableRow>

    </TableLayout>

</LinearLayout>

Кроме того, я попробовал это на эмуляторе с размером кучи 32, и у меня все еще была та же проблема.

ОБНОВЛЕНИЕ: теперь я попробовал это создание растрового изображения в doInBackground объекта AsyncTask и получил ту же проблему.

Кроме того, я хотел указать, что сейчас я загружаю reasource из папки drawable-nodpi, чтобы эмулятор не менял размер и по-прежнему имел проблемы.


person 8oh8    schedule 11.01.2012    source источник
comment
Вы можете опубликовать посадочный экран.xml?   -  person nandeesh    schedule 11.01.2012
comment
Там я разместил .xml   -  person 8oh8    schedule 11.01.2012


Ответы (3)


Растровые изображения в Android проблематичны для сборки мусора. Объект Java Bitmap — это просто дескриптор собственного объекта, который выполняет реальную работу по обработке объектов. Собственный объект хранится вне кучи Java, поэтому он не обрабатывается сборщиком мусора.

После того, как объект Java Bitmap будет собран мусором, он освободит собственный объект. Однако объект Java намного меньше, чем данные растрового изображения, поэтому, если вы продолжаете создавать новые экземпляры растрового изображения Java, собственная куча заполнится до вызова GC, даже если вы освободите ссылки на объекты. Поскольку нативная куча ничего не знает о куче Java, когда она переполняется, вместо того, чтобы вызывать GC, она просто взорвется.

Чтобы избежать этой ситуации, нужно вызвать Bitmap.recycle(), когда вы закончите использовать объект Java, чтобы освободить собственный объект, как если бы вы использовали C++. К сожалению, в Java нет поддержки деструкторов или интеллектуальных указателей, поэтому вам просто нужно полагаться на дисциплину программиста.

В вашем случае вызовы recycle() выполняются камерой, поэтому ваше исправление сработало.

person Michael Smith    schedule 19.01.2012
comment
Это было верно в Pre-Honeycomb. Память растровых изображений больше не обрабатывается таким образом. - person Cameron Lowell Palmer; 11.10.2012
comment
Хотите уточнить информацию о пост-сотах памяти? - person Pork 'n' Bunny; 03.06.2013
comment
Постсотовая память растровых изображений выделяется в куче Java. Посмотрите это выступление: youtube.com/watch?v=_CruQY55HOk - person mlepage; 29.09.2015

Я получал ошибку, потому что я не балансировал каждый вызов Camera.save() с вызовом Camera.restore().

person 8oh8    schedule 15.01.2012

Когда у меня возникла проблема с большой кучей, я пошел в определение эмулятора и изменил там размер памяти. Памяти по умолчанию очень мало, насколько я помню. И ваши 32 тоже не много. Почему вы так себя ограничиваете?

person Gangnus    schedule 14.01.2012
comment
Я ограничиваю его до 24, потому что таким образом он будет поддерживать больше телефонов. Я прав, думая об этом? Так что прямо сейчас, если бы я опубликовал свое приложение, оно бы не работало на телефонах с размером кучи 24. Кроме того, я не думаю, что хранение 3 растровых изображений должно занимать столько памяти кучи. - person 8oh8; 15.01.2012