“线程创建失败(错误=再试一次,堆栈大小= 1016KB)”

时间:2014-08-21 11:52:40

标签: android memory-management fragment

我的Android应用程序遇到了严重问题。

我的项目是一个基于片段的项目。

当我点击显示片段的某个按钮时,它会显示该片段没有问题。

"点击后退按钮,然后点击" show-fragment"按钮再次。"

如果我快速重复这些步骤,则log-cat上会显示以下错误,应用程序崩溃了。

  

08-21 19:37:23.557:E / dalvikvm(4975):线程创建失败(错误=尝试   再次,stacksize = 1016KB)08-21 19:37:23.557:E / dalvikvm(4975):线程   创建失败(错误=再试一次,stacksize = 984KB)08-21 19:37:23.558:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 952KB)08-21 19:37:23.558:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 920KB)08-21 19:37:23.558:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 1016KB)08-21 19:37:23.558:E / dalvikvm(4975):线程   创建失败(错误=再试一次,stacksize = 984KB)08-21 19:37:23.559:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 952KB)08-21 19:37:23.559:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 920KB)08-21 19:37:23.559:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 888KB)08-21 19:37:23.559:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 856KB)08-21 19:37:23.559:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 824KB)08-21 19:37:23.559:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 792KB)08-21 19:37:23.559:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 760KB)08-21 19:37:23.559:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 728KB)08-21 19:37:23.560:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 696KB)08-21 19:37:23.560:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 664KB)08-21 19:37:23.560:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 632KB)08-21 19:37:23.560:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 600KB)08-21 19:37:23.560:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 568KB)08-21 19:37:23.560:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 536KB)08-21 19:37:23.560:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 504KB)08-21 19:37:23.560:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 472KB)08-21 19:37:23.561:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 440KB)08-21 19:37:23.561:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 408KB)08-21 19:37:23.561:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 376KB)08-21 19:37:23.561:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 344KB)08-21 19:37:23.561:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 312KB)08-21 19:37:23.561:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 280KB)08-21 19:37:23.561:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 248KB)08-21 19:37:23.561:E / dalvikvm(4975):线程创建   失败(错误=再试一次,stacksize = 216KB)08-21 19:37:23.561:   E / dalvikvm(4975):线程创建失败(错误=再试一次,   stacksize = 184KB)08-21 19:37:23.562:E / dalvikvm(4975):线程创建   失败(错误=再试一次,堆栈大小= 152KB)08-21 19:37:23.876:   A / libc(4975):致命信号11(SIGSEGV)在0x00000000(代码= 1),线程   4975(oman.tasklogger)08-21 19:37:23.876:A / libc(4975):发送停止   信号到pid:4975 in void debuggerd_signal_handler(int,siginfo_t *,   无效*)

我认为我的项目配置中可能存在内存问题。 任何有这种错误经验的人都应该帮助我。 当我重复显示警告对话框并多次按下后退按钮时,发生了同样的错误。

这是内存不足的问题吗?

这是我显示警告对话框的代码。

public class ReportFragment extends BaseFragment {
....

private void onShowAlertButtonClicked() {
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
     builder.setTitle("Fruits");
     builder.setItems(new String[]{"Apple", "Orange", "Banana"}, null);
     AlertDialog dialog = builder.create();
     dialog.show();
}

...
}

总之,当多次触发此onShowAlertButtonClicked回调时,应用程序崩溃了。 我已经看到了堆栈溢出,它描述了Fragment中的AlertDialog。 他们说上下文对AlertDialog很重要。 所以我用各种上下文(如Activity和Application)更改了警告对话框的上下文, 但错误仍然存​​在。

对于Android忍者来说,这个错误也许并不难。

感谢您查看我的报告。

1 个答案:

答案 0 :(得分:0)

试试这个

private void onShowAlertButtonClicked(View v) {
     AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
     builder.setTitle("Fruits");
     builder.setItems(new String[]{"Apple", "Orange", "Banana"}, null);
     AlertDialog dialog = builder.create();
     dialog.show();
}