2016-12-04 14 views
-1

さて、私はAndroidを初めて使い、この小さな問題を抱えて答えが見つからないことがわかりました。私はこれが一般的なエラーだと知っていますが、私が見つけたスレッドはすべて私にとって役に立たないので、自分で作成しなければなりませんでした。OutOfMemoryError android m

私は単にリストビューを使用し、アダプタを持っています。項目をクリックしなくても、リストビューの項目を上下にスクロールすると、突然エラーが発生します。ここ

ログのいくつかである:

D/OpenGLRenderer:デバッグモード0

D/dalvikvmを有効にする:GC_FOR_ALLOCは、173Kを解放17008K/26172K 36%フリー、15msのを一時停止し、総15msの

I/dalvikvmヒープ:10760416バイトの割り当て

D/AbsListViewため31.092メガバイトにヒープ(フラグ・ケース)成長:unregisterIRListener()

と呼ばれています

D/AbsListView:unregisterIRListener()

D/AbsListView呼ばれるが:unregisterIRListener()I/dalvikvmヒープ

呼ばれる:33177616バイトの割り当て

ため61.836メガバイトにヒープ(フラグ・ケース)を成長

D/dalvikvm:GC_FOR_ALLOCは、52Kを解放59979K/69088K 14%フリー、約14msを消費し、一時停止、総14ms

I/dalvikvmヒープ:

18662416バイトの割り当てのため79.593メガバイトにヒープ(フラグ・ケース)を成長

D/dalvikvm:GC_FOR_ALLOCは、I/dalvikvmヒープ、7Kを解放78200K/87316K 11%フリー、15msのを一時停止し、総15msの

:33177616バイトの割り当て

Dため111.230MBするヒープ(フラグ・ケース)を成長/ dalvikvm:GC_FOR_ALLOCは、10515Kを解放し15%遊離101867K/119720K、I/dalvikvmヒープ17ms、総17ms

を一時停止:16104976バイトの割り当て

D/dalvikvmためSoftReferencesのコレクションを強制:GC_BEFORE_OOMは、15Kを解放15%無料101851K/119720K、一時停止28ms、合計28ms

E/dalvikvm-heap:16104976バイトの割り当てでメモリが不足しています。

VM

W/dalvikvmをシャットダウン:スレッドID = 1:致命的な例外:メイン プロセス:com.exampleスレッドがキャッチされない例外(グループ= 0x418ceda0)

E/AndroidRuntimeで出ます。 hesham.assignment2、PID:24883 java.lang.OutOfMemoryErrorを android.graphics.BitmapFactory.nativeDecodeAssetでandroid.graphics.BitmapFactory.decodeStreamで(ネイティブメソッド) (BitmapFactory.java:677) android.graphics.BitmapFactoryで。 decodeResourceStream(ビットマップFactory.java:507) android.graphics.drawable。Drawable.createFromResourceStream(Drawable.java:872) android.content.res.Resources.loadDrawable(Resources.java:3024) (android.content.res.Resources.getDrawable(Resources.java:1586)) はandroidです。 view.View.ViewBackgroundResource(View.java:16144) at com.example.hesham.assignment2.myAdaptor.getView(myAdaptor.java:47) at android.widget.AbsListView.obtainView(AbsListView.java:2694) at android.widget.ListView.makeAndAddView(ListView.java:1811)android.widget.ListView.fillDown(ListView.java:697)の とandroid.widget.ListView.fillGap(ListView.java:661)の はandroidです。ウィジェット.AbsListView.trackMotionScroll(AbsListView.java:6686) android.widget.AbsListView.scrollIfNeeded(AbsListView。 Javaの:3946) android.widget.AbsListView.onTouchMove(AbsListView.java:4789) でandroid.view.View.dispatchTouchEventでandroid.widget.AbsListView.onTouchEvent(AbsListView.java:4617) (View.javaで: 8107) android.view.View.View.View.View.View.View.View.View.View.Java:2411)の android.view.View.ViewGroup.dispatchTouchEvent(ViewGroup.java:2129)の のandroid.view.View.View.View.View.View.Java:2405の で、 android.view.ViewGroup.dispatchTouchEventでandroid.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411) でandroid.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144) (ViewGroup.java:2144) ででandroid.view.ViewGroup.dispatchTransformedTouchEve nt(ViewGroup.java:2411) android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2411) at android.view.ViewGroup.dispatchTouchEvent( ViewGroup.java:2144) (android.view.View.View.View.View.java:2411) (android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2144) )com.android.internal.policy.implで表示します。 PhoneWindow $ DecorView.superDispatchTouchEvent(PhoneWindow.java:2280) com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1615) at android.app.Activity.dispatchTouchEvent(Activity.java:2544) android.support.v7.app.ActionBarActivityDelegateICSの $ WindowCallbackWrap (View.java:8315)ののDecor.DispatchTouchEvent(ActionBarActivityDelegateICS.java:268) のcom.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchTouchEvent(PhoneWindow.java:2228) android.view.ViewRootImpl $ InputStage.deliverでandroid.view.ViewRootImpl $ ViewPostImeInputStage.onProcess(ViewRootImpl.java:4466) でandroid.view.ViewRootImpl $ ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4598) (ViewRootImplで 。 Javaの:4024)android.view.ViewRootImpl $ AsyncInputStageでandroid.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:4047) でandroid.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:4078) で 。 forward(ViewRootImpl.java:4158) はandroidです。 viewRootImpl $ InputStage.apply(ViewRootImpl.java:4055) android.view.ViewRootImpl $ AsyncInputStage.apply(ViewRootImpl.java:4215) (android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4024) android.view.ViewRootImpl $ InputStage.applyでandroid.view.ViewRootImpl $ InputStage.forward(ViewRootImpl.java:4047) でandroid.view.ViewRootImpl $ InputStage.onDeliverToNext(ViewRootImpl.java:4078) (ViewRootImplで 。 Javaの:4055)android.view.ViewRootImpl $ InputStage.deliver(ViewRootImpl.java:4024)android.view.ViewRootImpl.doProcessInputEventsでandroid.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6416) で (ViewRootImplで 。 java:6320) android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl。Javaの:6291) android.view.ViewRootImpl $ WindowInputEventReceiver.onInputEventでandroid.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6256) (ViewRootImpl.java:649

ではまた、強調表示された行があります。これは私のアダプタでラインを指し

y2.setBackgroundResource(項目[I] .IMG);ここ

とは、私の全体のアダプタの

public class myAdaptor extends BaseAdapter{ 
Data items[]; 
Context context; 
TextView y; 
ImageView y2; 
myAdaptor(Data items[], Context context) 
{ 
    this.items=items; 
    this.context=context; 
} 

@Override 
public int getCount() { 
    return items.length; 
} 

@Override 
public Object getItem(int i) { 
    return i; 
} 

@Override 
public long getItemId(int i) { 
    return i; 
} 

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    View x=view; 
    if(x==null) 
    { 
     x=View.inflate(context,R.layout.item,null); 
    } 
    y=(TextView) x.findViewById(R.id.textView); 
    y2=(ImageView) x.findViewById(R.id.imageView); 
    y.setText(items[i].str1); 
    y2.setBackgroundResource(items[i].img); 

    return x; 
}} 

このエラーが発生する理由はわかりません。他のすべてのスレッドが使用しているビットマップは使用していません。どのようにこれを修正するためのアイデアですか? 私のコードでスレッドを更新する必要があるかどうか教えてください。 長いポストに申し訳ありません、ありがとうございます。

+0

いくつかのAPIを介してウェブから画像を読み込んでいますか? –

+0

あなたがロードしているサイズや画像を縮小します。彼らはサイズが重くなければなりませんなぜoutOfMemoryErrorが来るのですか – Sangeeta

+0

shuvro;いいえ、私のPCから。 @Sangeeta私は6つの画像を使用しています、そしてそれらは400kbです。しかし、私は188メガバイトの21曲を使用していますが、それは190メガバイトのアプリを作るので、それは問題だとは思わないので、正しく動作するはずですか? – Ahmed

答えて

1

この

があなたのresフォルダ内drawable-nodpiという名前のフォルダを作成してみてください。そこにあなたのすべてのイメージを置く。

+0

うわー、それは働いた。ありがとう、しかし、違いは何か、またはnodpiは何ですか? – Ahmed

+0

うれしいことに、あなたの画像の背後にある理由は、あなたのデバイスの密度に応じて拡大しようとしました。 drawable-nodpiにイメージを置くと、デバイスの密度に応じてイメージが拡大縮小されません。それがあなたの問題を解決するなら、答えを受け入れるべきです。 –