【问题标题】:How to keep a reference of AsyncTask while orientation changes如何在方向更改时保留 AsyncTask 的引用
【发布时间】:2014-06-19 09:35:48
【问题描述】:

我正在从纵向启动 AsyncTask,然后我将方向更改为横向。此时我需要引用该正在运行的 AsyncTask 以便我可以取消该任务。

实际情况是这样的:

@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.startBtn:
            sampleTaskOne = new SampleAsyncTaskOne(this, sampleTaskCallbacks);
            sampleTaskOne.execute();
            break;
        case R.id.stopBtn:
            sampleTaskOne.cancel(true);
            sampleTaskOne = null;
        default: break;
    }
}

现在,如果我单击 stopBtn 改变方向后会发生 NullPointerException,因为 sampleTaskOne 未初始化。那么如何保持运行 AsyncTask 的参考呢?

请不要使用 Fragment。不要将其作为“如何在方向更改时使用异步任务”或类似内容的副本提及。我知道几种替代解决方案,但我确实想保留该 AsyncTask 的参考。

【问题讨论】:

    标签: android android-activity android-asynctask


    【解决方案1】:

    您可以将sampleTaskOne 存储为静态变量,并在完成或取消时将其传递给null

    【讨论】:

    • 如果我需要跟踪多个异步任务怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2017-07-19
    相关资源
    最近更新 更多