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

时间:2012-09-18 11:35:28

标签: java android android-asynctask task

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

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

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

在实现Callback接口的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并将其作为“正常”线程执行,以检查会话是否仍然有效?

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

最好的问候

1 个答案:

答案 0 :(得分:0)

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