0

私は現在、一緒に取り組む必要がある 2 つの異なる活動を行っています。

最初にいくつかActivity #1の仕事をしてから、電話Activity#2してそれが完了するまで待ってから、別の仕事をしてから、一時停止してもう一度電話する 必要Activity#2があります...など.

整理: アクティビティ 2 から何らかの結果が得られるたびに、アクティビティ 1 の UI を更新する必要があるため、ほとんどのコードを AsyncTask 内に配置することにしました。

//class Activity#1: 
    onCreate(){
     // creates UpdateUITask (the AsyncTask), pass its Context as parameter
    }
    onActivityResult()
    {
     // do something with result
    }

// the AsyncTask
class UpdateUITask implements AsyncTask{
    doInBackground(){
     // uses the passed context to call startActivityForResult(Activity#2)
     // this is done multiple times ***
    }
    publishProgress()
    { 
     // update the UI of Activity #1
    }
}

私の問題は、上記の*でマークしたものが実際には startActivityForResult によって一時停止されておらず、Activity#1 だけが一時停止していることです。そのため、AsyncTask は Activity#2 の複数のインスタンスを作成しますが、これは私の場合は望ましくありません。この問題を克服する方法はありますか?

前回はご迷惑をおかけしました。

4

1 に答える 1

0

使うことactivity#2から始めます。操作が完了したら、そのアクティビティを終了できます。で説明した終了時に が呼び出され、残りの操作を実行できます。activity#1startActivityForResult()activity#2activity#2 onActivityResult()activity#1

詳細については、次のリンクを確認してください: http://developer.android.com/reference/android/app/Activity.html#StartingActivities

編集

メソッドdoInBackground()は非 UI スレッドで実行されます。startActivityForResult(Activity#2)このメソッドから呼び出すのは間違っています。ユーザーの介入を必要としないプロセスがある場合は、アクティビティを呼び出す必要はありません。その非 UI プロセスをインdoInBackground()publishProgress()インに記述するだけです。Activity #1

于 2012-06-18T09:19:41.483 に答える