0
我有一個線程,我在其中捕獲異常。我想要的是當發生這種情況時,線程關閉/退出/死亡或我應該說的任何事情,並顯示一個警告對話框(不像敬酒!)。Android:強制一個線程關閉並顯示一個警告對話框
這裏是我的代碼:
t1 = new Thread(new Runnable()
{
public void run()
{
Looper.prepare();
StringBuffer stringBuffer = new StringBuffer("");
BufferedReader bufferedReader = null;
URI uri = null;
try
{
requestAndMakeSheet(stringBuffer, bufferedReader, uri);
}
catch (Exception e)
{
//Toast.makeText(getBaseContext(), "Web Request Error", Toast.LENGTH_LONG).show();
//Log.e("Web Request Error", e.getMessage());
t1.interrupt();
AlertDialog.Builder parsingErrorBox = new AlertDialog.Builder(ReservationInfo.this);
parsingErrorBox.setTitle("Login error");
parsingErrorBox.setMessage("You may have to check your credentials and then try again.");
parsingErrorBox.show();
}
finally
{
if (bufferedReader!=null)
{
try
{
bufferedReader.close();
}
catch (IOException ioe)
{
Log.e("Web Request Error", ioe.getMessage());
}
}
}
}
});
t1.start();
try
{
t1.join();
mWebview.loadUrl("file:///"+Environment.getExternalStorageDirectory()+"/MySheet.html");
setContentView(mWebview);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//End of le thread
}
此代碼崩潰,我認爲這是與t1.interrupt(試圖停止代替,但也不能工作)。
我該如何解決這段代碼? 預先感謝您。
發佈您的LogCat錯誤,它通常解釋到底發生了什麼。你也應該通過你的舊問題並接受最好的答案,人們志願幫助你,請用這個簡單的手勢「報答」他們。 – Sam
12-15 01:27:34.619:W/HardwareRenderer(14911):嘗試初始化主線程外部的硬件加速,正在中止 12-15 01:28:34.404:I/dalvikvm(14911):threadid = 3:反應以信號3 1月12日至15日:28:34.474:I/dalvikvm(14911):寫堆棧跟蹤到 '/data/anr/traces.txt' 這就是它說。但是我的應用中有很多事情發生錯誤。當requestAndMakeSheet引發異常時,該文件應該不會顯示在webview中,但實際上它會加載它(它會加載先前的文件join())。另外,當它拋出異常時,活動凍結! – user1881815
您可以隨時通過調試器逐行瀏覽代碼,以縮小問題的根源。你也可以在你的catch塊中使用'e.printStackTrace()'來查看錯誤細節。除此之外,什麼是'requestAndMakeSheet()'? – Sam