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