1

AsyncTask を使用して、バックグラウンドで http リクエストに対してデータの読み込みを実行します。http リクエストはセッション変数を使用します。この変数は無効になる可能性があり、http 要求はエラーを返します。この場合、ユーザーは再ログインする必要があります。

だから、私はこのようなものを使うことができます:

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

Callback インターフェイスを実装するアクティビティでは、データ オブジェクトが 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

よろしくお願いします

4

1 に答える 1

0

ExecutorService に移動します。これは、特にそのようなタイマー関連のタスクを対象としています。また、ハンドラーを ExecutorService と組み合わせて使用​​することをお勧めします。これは、ハンドラーを使用すると、Asynctask と比較して、このようなタスクをより詳細に制御できるためです。

于 2012-09-18T11:46:53.693 に答える