应用程序崩溃了几次但没有处于调试模式

Pra*_*ahu 2 java android

我有一个奇怪的情况,我的应用程序有时会崩溃(比如在做了将近20次事务后),但在调试模式下,即使在模拟器中它也不会发生崩溃.我也增加了我的堆内存.

我在这附加的日志错误:

 07-20 11:27:39.207: E/AndroidRuntime(17877): FATAL EXCEPTION: main
07-20 11:27:39.207: E/AndroidRuntime(17877): java.lang.OutOfMemoryError
07-20 11:27:39.207: E/AndroidRuntime(17877):    at java.util.ArrayList.toArray(ArrayList.java:492)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at java.util.ArrayList.<init>(ArrayList.java:93)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at com.mis.adapter.MicListAdapter.<init>(MicListAdapter.java:52)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at com.mis.controller.InventoryCount$InflateList.onPostExecute(InventoryCount.java:3061)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at com.mis.controller.InventoryCount$InflateList.onPostExecute(InventoryCount.java:1)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.os.AsyncTask.finish(AsyncTask.java:631)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.os.Looper.loop(Looper.java:137)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at android.app.ActivityThread.main(ActivityThread.java:4895)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at java.lang.reflect.Method.invokeNative(Native Method)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at java.lang.reflect.Method.invoke(Method.java:511)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
07-20 11:27:39.207: E/AndroidRuntime(17877):    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

这里我附上了我的onPostMethod()

protected void onPostExecute(List<MIC_OrderDetails> lst) {
            dialog.setMessage("Inflating Data...");
            if (lst.get(lst.size() - 1).getResult().contains(("success"))) {
                ordList = new MicListAdapter(InventoryCount.this, lst);
                lstView.setAdapter(ordList);
                dialog.dismiss();
            } else {
                dialog.dismiss();
                toastText.setText("Problem in loading Items");
                Toast toast = new Toast(getApplicationContext());
                toast.setGravity(Gravity.CENTER_VERTICAL, 0, 410);
                toast.setDuration(Toast.LENGTH_LONG);
                toast.setView(toastLayout);
                toast.show();
            }
        }
Run Code Online (Sandbox Code Playgroud)

K N*_*Lal 9

不要在onPostExecute()方法中再次重新创建适配器.相反,在创建适配器曾经onCreate()方法和使用adapter.notifyDatasetChanged()onPostExecute()方法.像这样的东西,

将数据集创建list为类变量并在onCreate()此之前初始化它,

List<MIC_OrderDetails> list = new ArrayList<MIC_OrderDetails>();
Run Code Online (Sandbox Code Playgroud)

在onCreate方法里面初始化适配器,

adapter = new MicListAdapter(InventoryCount.this, list);
lstView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

在onPostExecute方法里面,

protected void onPostExecute(List<MIC_OrderDetails> lst) {
    dialog.setMessage("Inflating Data...");
    if (lst.get(lst.size() - 1).getResult().contains(("success"))) {
        list.clear();
        list.addAll(lst);
        adapter.notifyDataSetChanged();
        dialog.dismiss();
    } else {
        dialog.dismiss();
        toastText.setText("Problem in loading Items");
        Toast toast = new Toast(getApplicationContext());
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 410);
        toast.setDuration(Toast.LENGTH_LONG);
        toast.setView(toastLayout);
        toast.show();
    }
}
Run Code Online (Sandbox Code Playgroud)