【发布时间】:2015-10-21 16:00:16
【问题描述】:
ProgressDialog 在 onPreExecute() 方法中崩溃。
下面是我的代码sn-p:
public class TestCasesActivity extends Activity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testcases);
xmlHelp = new XmlHelper();
ConfigParser confParser = new ConfigParser();
confParser.execute();
}
private class ConfigParser extends AsyncTask<Void, Void, Void> {
private ProgressDialog dialog;
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(TestCasesActivity.this);
dialog.setMessage("Loading TestCases Configuration...");
dialog.show();
}
@Override
protected Void doInBackground(Void... params) {
xmlHelp.getNumberOfNodes();
return null;
}
@Override
protected void onPostExecute(Void v) {
dialog.dismiss();
// Show test cases list here via a ListView
}
}
请提出这里可能出现的问题。 logcat 打印如下:
07-30 08:13:50.511 20200-20200/? E/WindowManager: android.view.WindowLeaked:活动 com.TestCasesActivity 有漏窗 com.android.internal.policy.impl.PhoneWindow$DecorView{31a83555 V.E..... R......D 0,0-1026,348} 最初添加在这里 在 android.view.ViewRootImpl.(ViewRootImpl.java:363) 在 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:262) 在 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 在 android.app.Dialog.show(Dialog.java:298) 在 com.TestCasesActivity$ConfigParser.onPreExecute(TestCasesActivity.java:41) 在 android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) 在 android.os.AsyncTask.execute(AsyncTask.java:535) 在 com.TestCasesActivity.onCreate(TestCasesActivity.java:30) 在 android.app.Activity.performCreate(Activity.java:5984) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2254) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2361) 在 android.app.ActivityThread.access$800(ActivityThread.java:147) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5232) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
之前还有一个解析器导致的崩溃:
07-30 08:40:32.651 22982-23154/? E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: com.performance_tool, PID: 22982
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: org.w3c.dom.DOMException: Only one root element allowed
at org.apache.harmony.xml.dom.DocumentImpl.insertChildAt(DocumentImpl.java:421)
at org.apache.harmony.xml.dom.InnerNodeImpl.appendChild(InnerNodeImpl.java:52)
at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:306)
at org.apache.harmony.xml.parsers.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:128)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:107)
at com.XmlHelper.getNumberOfNodes(XmlHelper.java:29)
at com.TestCasesActivity$ConfigParser.doInBackground(TestCasesActivity.java:46)
at com.TestCasesActivity$ConfigParser.doInBackground(TestCasesActivity.java:33)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
【问题讨论】:
-
在改变方向时是否崩溃??
-
不行,活动一启动就崩溃了
-
应用崩溃时请分享更多细节
-
TestCasesActivity 活动一启动就崩溃
-
第二个错误日志中清楚地解释了,只允许一个根元素。这意味着,您的 xml 内容具有多个根元素。请检查您的 xml 内容,否则在此处发布 xml contnet。
标签: android