java - 应用程序崩溃了几次但不是在 Debug模式下

标签 java android

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

我在这里附加的日志错误:

 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)

这里附上我的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();
            }
        }

最佳答案

不要在 onPostExecute() 方法中再次重新创建适配器。而是在 onCreate() 方法中创建一次适配器,并在 onPostExecute() 方法中使用 adapter.notifyDatasetChanged()。像这样,

创建你的数据集 list 作为类变量并在 onCreate() 之前初始化它,就像这样,

List<MIC_OrderDetails> list = new ArrayList<MIC_OrderDetails>();

在 onCreate 方法中初始化适配器,

adapter = new MicListAdapter(InventoryCount.this, list);
lstView.setAdapter(adapter);

在 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();
    }
}

关于java - 应用程序崩溃了几次但不是在 Debug模式下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38343724/

相关文章:

java - 在任意字符串中转义正则表达式字符类的简单方法?

java - 如何知道 Swing 的 getActionCommand() 中的有效命令是什么?

java - 如何将User_Id传递给android中的每个 Activity ?

android - 添加一个用C编写的新SDK到android中

android - 来电或去电时录制语音(仅 MIC)

android - 使用 Flash Builder 4.5 构建移动应用程序(IOS 和 Android)

java - HashMap 的 XMLAdapter

java - Java 列表中的二分查找

javascript - Android 4.0 中的 pushState

java - 与远程主机的 TCP 套接字连接失败 (EINVAL)