gpt4 book ai didi

java - Android:使用AsyncTask类的回调方法来更改Activity

转载 作者:行者123 更新时间:2023-12-01 05:07:37 24 4
gpt4 key购买 nike

我使用 AsyncTask 在后台通过 http 请求执行一些数据加载。 http 请求使用 session 变量。该变量可能会变得无效,并且 http 请求将返回错误。在这种情况下,用户必须重新登录。

那么,我可以使用这样的东西吗:

protected void onPostExecute(IData data) {
//
// !!On Error data object is null!!
//
if (mCallback != null) {
mCallback.onTaskComplete(data);
}
}

在实现回调接口(interface)的 Activity 中,我只需检查数据对象是否为 null 并将 Activity 更改为“MainActivity”登录表单。

    public void onTaskComplete(IData data) {
if (data == null) {
Intent intent = new Intent(ReadDataActivity.this, MainActivity.class);
deleteCurrentSavedSession();
startActivity(intent);
} else {
// Do something with the data
}
}

这是一个坏主意吗?我是否应该更好地使用 ExecutorService 并将其作为“普通”线程执行以检查 session 是否仍然有效?

ExecutorService executor = Executors.newFixedThreadPool(2);
executor.execute(sessionCheckWorker);
executor.shutdown();
while (!executor.isTerminated()) {

}
// Wait until session check task is finished and decide which Activity to load

最诚挚的问候

最佳答案

前往ExecutorService。它专门用于此类与计时器相关的任务。我还建议您将处理程序与 ExecutorService 结合使用,因为与 Asynctask 相比,处理程序可以让您更好地控制此类任务。

关于java - Android:使用AsyncTask类的回调方法来更改Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12476236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com