Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:使用AsyncTask类的回调方法更改活动_Java_Android_Android Asynctask_Task - Fatal编程技术网

Java Android:使用AsyncTask类的回调方法更改活动

Java Android:使用AsyncTask类的回调方法更改活动,java,android,android-asynctask,task,Java,Android,Android Asynctask,Task,我使用AsyncTask在后台通过http请求执行一些数据加载。http请求使用会话变量。此变量可能无效,http请求将返回错误。 在这种情况下,用户必须重新登录 那么,我可以用这样的方法吗: protected void onPostExecute(IData data) { // // !!On Error data object is null!! // if (mCallback != null) {

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

那么,我可以用这样的方法吗:

protected void onPostExecute(IData data) {
            //
            // !!On Error data object is null!!
            // 
    if (mCallback != null) {
        mCallback.onTaskComplete(data);
    }
}
在实现回调接口的活动中,我只需检查数据对象是否为null,并将活动更改为“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

向您致以最诚挚的问候

欢迎光临。它专门用于此类计时器相关任务。我还建议您将处理程序与ExecutorService结合使用,因为与Asynctask相比,处理程序为您提供了对此类任务的更多控制