为什么在上传到Flickr之前调用onActivityResult()会使用Flickrj android完成

为什么在上传到Flickr之前调用onActivityResult()会使用Flickrj android完成,android,android-intent,flickr,onactivityresult,flickrj,Android,Android Intent,Flickr,Onactivityresult,Flickrj,我需要为我的应用程序做一个这样的功能:当用户按下“保存”按钮时,所选图像将上载到Flickr,然后从Flickr获取上载图像的源以存储到数据库中。我使用flickrj android库来做。这是我的代码: //call this function when "Save" button is clicked Intent intent = new Intent(getApplicationContext(),FlickrjActivity.class); intent.putExtra("flic

我需要为我的应用程序做一个这样的功能:当用户按下“保存”按钮时,所选图像将上载到Flickr,然后从Flickr获取上载图像的源以存储到数据库中。我使用flickrj android库来做。这是我的代码:

//call this function when "Save" button is clicked
Intent intent = new Intent(getApplicationContext(),FlickrjActivity.class);
intent.putExtra("flickImagePath", currentScreenshot);   
startActivityForResult(intent, UPLOAD_FLICKR);
Log.i("ordering","afterStartFlickrUpload");
onActivityResult()

我有一个名为FlickrActivity的活动,它创建了一个名为UploadPhotoTask的异步任务 UploadPhotoTask有一个名为onPostExecute的方法,该方法有一个参数,该参数是作为Flickr API响应的上传照片的Flickr照片ID

protected void onPostExecute(String response) {
   Log.i("photoID",response);
}
这是FlickrActivity的load()方法:

private void load(OAuth oauth) {
    if (oauth != null) {

        UploadPhotoTask taskUpload = new UploadPhotoTask(this, new File(
                path));
        taskUpload.setOnUploadDone(new UploadPhotoTask.onUploadDone() {

            @Override
            public void onComplete() {
                Intent intent = new Intent();
                intent.putExtra("flickr_source", "This is a link");
                setResult(RESULT_OK, intent);
                finish();
            }
        });

        taskUpload.execute(oauth);
    }
}
我期望的过程是主活动创建一个调用
flickrjavity
的意图,该意图将创建
UploadPhotoTask
以将照片上载到Flickr,获取照片ID,然后使用
setResult(RESULT\u OK,intent)将该ID返回给主活动
finish()

但在我按下Save按钮之后,
onActivityResult()
调用了since
Log.I(“ordering”、“beforeSultCode”)在上传运行之前将消息打印到Logcat,因此在上传完成后不会再次调用
if(resultCode==RESULT\u OK)
中的块,因为
onActivityResult()
。那么为什么在FlickrActivity的
finish()
之前调用
onActivityResult()

我确实找到了答案,只需要将android:launchMode从“singleTask”更改为“singleTop”,尽管我不知道为什么

private void load(OAuth oauth) {
    if (oauth != null) {

        UploadPhotoTask taskUpload = new UploadPhotoTask(this, new File(
                path));
        taskUpload.setOnUploadDone(new UploadPhotoTask.onUploadDone() {

            @Override
            public void onComplete() {
                Intent intent = new Intent();
                intent.putExtra("flickr_source", "This is a link");
                setResult(RESULT_OK, intent);
                finish();
            }
        });

        taskUpload.execute(oauth);
    }
}