0

AsyncTaskメソッドでファイルをダウンロードするメソッドがありdoInBackground()ます。アプリをリリースする前にテストしています。アプリを手動で強制終了して再起動すると、 が呼び出されたように見えますが、とdoInBackground()は呼び出されません。UI の変更を引き起こす私の呼び出しメソッド。onProgressUpdate()onPostExecute()onPostExecute()

どうすればonPostExecuteonProgressUpdate()が呼び出されることを確認できますか? 次の警告も表示されます。

Activity停止タイムアウトActivityRecordまたはActivity破棄タイムアウトActivityRecordまたはActivityアイドル タイムアウトActivityRecord

コード:

public void OnCreate(){

    new RefreshMyDashboardTask().execute();
}

private class RefreshMyDashboardTask extends AsyncTask<Void, Void, Long> {

    @Override
    protected void onPreExecute() {
    }

    @Override
    protected void onProgressUpdate(Void... params) {
        super.onProgressUpdate(params);
    }

    @Override
    protected Long doInBackground(Void... params) { 
        // my server calls are called here.
    }

    @Override
    protected void onPostExecute(Long result) {
    }
}
4

1 に答える 1

1

アプリを強制終了した場合、またはシステムがアプリを強制終了した場合、アプリの AsyncTask スレッドは強制終了されます。それらはすべてアプリのプロセスの一部です。スレッドは、スレッドを開始したプロセスの外では存続できません。

IntentService でさえ、強制終了に耐えられない場合があります。そのため、タスクキラーは非常に悪い考えです。

要するに、あなたが見ているのは期待される動作です。

于 2013-02-15T00:23:19.017 に答える