2016-10-01 39 views
2

私は、ユーザーのエラーを回避するためのすべての可能性を考慮しています。 onPostExecuteインターフェイスを意味呼び出されない任意の時間があるAsyncTask onPostExecute()が呼び出されないときは?

public class GetVideoInfoFromDataBase extends AsyncTask { 

    Context context; 
    private AsyncInterface asyncInterface; 

    // Paginated list of results for alarm database scan 
    static PaginatedScanList<AlarmDynamoMappingAdapter> results; 

    // The DynamoDB object mapper for accessing DynamoDB. 
    private final DynamoDBMapper mapper; 

    public GetVideoInfoFromDataBase(Context context, AsyncInterface asyncInterface){ 
     mapper = AWSMobileClient.defaultMobileClient().getDynamoDBMapper(); 
     this.context = context; 
     this.asyncInterface = asyncInterface; 

    } 

    @Override 
    protected Object doInBackground(Object[] params) { 
     System.out.println("The backgrond stuff is working 1"); 
     DynamoDBScanExpression scanExpression = new DynamoDBScanExpression(); 
     results = mapper.scan(AlarmDynamoMappingAdapter.class, scanExpression); 
     return results; 
    } 

    @Override 
    public void onPostExecute(Object obj) { 

      asyncInterface.response((PaginatedScanList<AlarmDynamoMappingAdapter>)obj); 
    } 
} 

ません:

私はインターフェイスを実装し、以下のようにAsyncTaskのonPostExecuteで呼び出し元のクラスに応答を返すAsyncTaskを持っています値を返しますか?

ご協力いただきありがとうございます。

+1

'onPostExecute'を呼び出す必要があります。なぜ 'System.out.println'が' onpostExecute'の中に何か呼び出されたかどうかを確認するのはなぜですか? –

+0

それは大丈夫です。 –

+0

私はそれが呼び出されないような状況があるのか​​と尋ねています。 –

答えて

2

onPostExecute()doInBackground()戻っ限り実行され、あなたは(あなたのAsyncTaskインスタンス上cancel()を呼び出すことによって)明示的にタスクをキャンセルしませんでした。技術的には、onPostExecute()は後に(と場合)と呼ばれます

次の行が正常に実行されます:

return results; 

を限り、あなたのプロセスがその間に殺されませんよう。

タスクをキャンセルした場合は、onPostExecute()の代わりにonCancelled()が呼び出されます。

関連する問題