0

我目前有 2 项不同的活动需要一起工作。

我需要Activity #1先做一些工作,然后打电话Activity#2等待它完成,然后做一些不同的工作,然后暂停并Activity#2再次打电话,......等等。

编辑:我不知道我在想什么,但我错过了这个拼出:每当我从 Activity 2 获得一些结果时,我都需要更新 Activity 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#2activity#1使用开始startActivityForResult()。完成activity#2操作后,您就可以完成该活动。完成后将activity#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 回答