Android 异步任务捕获块中的休眠
我目前面临一个问题,即Thread.sleep方法的第一个调用正确执行,但是catch块中的第二个调用没有正确执行。我删除了Thread.sleep调用的try-catch块。为了可读性,没有引发异常。AsyncTask立即进入onPostExecute,第二个Thread.sleep调用未运行 问题出在哪里Android 异步任务捕获块中的休眠,android,android-asynctask,Android,Android Asynctask,我目前面临一个问题,即Thread.sleep方法的第一个调用正确执行,但是catch块中的第二个调用没有正确执行。我删除了Thread.sleep调用的try-catch块。为了可读性,没有引发异常。AsyncTask立即进入onPostExecute,第二个Thread.sleep调用未运行 问题出在哪里 private class SomeTask extends AsyncTask<String, Void, String> { @Override prote
private class SomeTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
System.out.println("PreExecute done.");
}
@Override
protected String doInBackground(final String... urls) {
Thread.sleep(1000);
try {
doSomething();
} catch (Exception e) {
Thread.sleep(1000);
}
return "something";
}
@Override
protected void onPostExecute(final String result) {
doSomething();
}
}
私有类SomeTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
System.out.println(“预执行完成”);
}
@凌驾
受保护字符串doInBackground(最终字符串…URL){
睡眠(1000);
试一试{
doSomething();
}捕获(例外e){
睡眠(1000);
}
返回“某物”;
}
@凌驾
受保护的void onPostExecute(最终字符串结果){
doSomething();
}
}
只有在执行try
块的过程中引发类的实例(在您的情况下是)时,才会执行catch
块代码。看起来您可能正在查找finally
关键字。
下面的代码片段将调用指定的函数,忽略任何引发的异常并使当前线程休眠1000毫秒
try {
exceptionsRaisingMethod();
}
finally {
// always sleep
Thread.sleep(1000);
}
上面的代码片段实际上是执行以下操作的更好方法:
try {
exceptionsRaisingMethod();
}
catch (Exception e) {
// do nothing
}
Thread.sleep(1000); // always sleep
您知道,如果出现异常,它将只在
catch
块中运行,对吗?