Android:强制线程关闭并显示警报对话框
我有一个线程,在其中我捕获了一个异常。我想要的是,当这种情况发生时,线程关闭/退出/死亡或我应该说的任何事情,并显示一个警报对话框(不像祝酒一样!) 这是我的密码:Android:强制线程关闭并显示警报对话框,android,multithreading,dialog,alert,Android,Multithreading,Dialog,Alert,我有一个线程,在其中我捕获了一个异常。我想要的是,当这种情况发生时,线程关闭/退出/死亡或我应该说的任何事情,并显示一个警报对话框(不像祝酒一样!) 这是我的密码: t1 = new Thread(new Runnable() { public void run() { Looper.prepare(); StringBuffer stringBuffer = new StringBuffer
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有关(尝试停止,但也不起作用)
如何修复此代码?
提前谢谢你。你为什么要用t1.interrupt()呢?不管怎样,您的线程似乎都会被终止,那么将其放在那里的原因是什么?发布日志猫错误,它通常会准确地解释发生了什么。此外,您还应该检查您的老问题并接受最佳答案,人们自愿花时间帮助您,请用这个简单的手势“回报”他们。12-15 01:27:34.619:W/HardwareRenderer(14911):尝试在主线程之外初始化硬件加速,中止12-15 01:28:34.404:I/dalvikvm(14911):threadid=3:对信号3作出反应12-15 01:28:34.474:I/dalvikvm(14911):将堆栈跟踪写入“/data/anr/traces.txt”,仅此而已。但我的应用程序中有很多事情出错。当requestAndMakeSheet抛出异常时,该文件不应显示在webview中,但实际上它确实加载了异常(加载了先前的文件join()。此外,当它抛出异常时,活动冻结!您始终可以使用调试器逐行遍历代码,以缩小问题的根源。您还可以在catch块中使用
e.printStackTrace()
查看错误详细信息。除此之外,什么是requestAndMakeSheet()
?我不能使用调试器,它本身就有bug!如果我尝试进入线程,它会说“类文件编辑器-找不到ClassLoader.Class的源”!!!好的,我通过更改断点并将它们放在线程中,成功地绕过了调试器的错误。requestAndMakeSheet是一个巨大的函数,它使用jSoup解析HTML文件。它所做的是,当jSoup找不到页面的某些元素时抛出异常,当用户输入的登录名和/或密码不正确时会发生什么。我在代码中删除了t1.interrupt(),但现在发生的是,当抛出异常时,警报对话框不会显示,webView显示“网页不可用”,应用程序完全冻结(因为我想如果我不这样做,消息框永远不会出现。