Android asynctask android:AsyncTask onPostExecute即使在doInBackground上启动新活动也能继续工作

Android asynctask android:AsyncTask onPostExecute即使在doInBackground上启动新活动也能继续工作,android-asynctask,Android Asynctask,我正在为客户端构建一个应用程序,用于从服务器获取问题并回答问题,如果服务器没有问题,我希望转到新屏幕并打印消息,几分钟后重试,获取问题在异步任务中,如果服务器没有问题,它将在响应的标题中发送,标题isFindAQuestion的值为false,下面是客户端上的代码,以确保如果false,我在LogCat上打印,并看到消息=false,但我的问题是,即使我以意图启动新活动,此活动继续工作并向我显示异常,它是null指针异常,因为在onPostExceute上,将使用参数null并尝试处理它,我将f

我正在为客户端构建一个应用程序,用于从服务器获取问题并回答问题,如果服务器没有问题,我希望转到新屏幕并打印消息,几分钟后重试,获取问题在
异步任务中,如果服务器没有问题,它将在响应的标题中发送,标题
isFindAQuestion
的值为
false
,下面是客户端上的代码,以确保如果
false
,我在LogCat上打印,并看到
消息=false
,但我的问题是,即使我以
意图启动新活动,此活动继续工作并向我显示异常,它是
null指针异常
,因为在
onPostExceute
上,将使用参数
null
并尝试处理它,我将
finish()
放在
false语句
的末尾,但没有完成此活动

if (response.getFirstHeader("isFindAQuestion").getValue()
                        .toString().equals("false")) {
                    Log.d("message", "false");
                    Bundle basket = new Bundle();
                    basket.putString("Message", "sorry no enought questions");
                    Intent goToAnswerQuestion = new Intent(AnswerQuestion.this,
                            FinishTime.class);
                    goToAnswerQuestion.putExtras(basket);
                    startActivity(goToAnswerQuestion);
                    finish();

                } 

编辑是因为
AsyncTask
正在
线程上工作,所以如果活动完成,该线程将继续工作吗?如果是,我如何停止该线程?

doInBackground不是在UI线程中执行的,而是在一个单独的线程中执行的:

在onPreExecute()之后立即在后台线程上调用 完成执行。此步骤用于执行后台操作 可能需要很长时间的计算

如果要停止后台操作并在UI线程上执行某些活动,最好调用cancel(),然后在UI线程上执行onCancelled回调中所需的所有内容

从AsyncTask文档中:

可以通过调用cancel(布尔值)随时取消任务。 调用此方法将导致对isCancelled()的后续调用返回true。调用此方法后,将在doInBackground(Object[])返回后调用onCancelled(Object),而不是onPostExecute(Object)。 为了确保尽快取消任务,您应该始终定期检查doInBackground(Object[])中isCancelled()的返回值,如果可能的话(例如在循环中)

在调用cancel(布尔值)并完成doInBackground(对象[])后在UI线程上运行。 默认实现只调用onCancelled()并忽略结果。如果您编写自己的实现,请不要调用super.onCancelled(result)


您好,这个if语句在doInBackground()方法中。?你可以使用这个是的,这是在doinbackground方法,我会检查链接
protected void onCancelled (Result result)