【问题标题】:Why onActivityResult() called before uploading to Flickr finishes using Flickrj-android为什么在上传到 Flickr 之前调用 onActivityResult() 完成使用 Flickrj-android
【发布时间】:2014-09-25 15:50:55
【问题描述】:

我需要为我的应用程序做这样的功能:当用户按下“保存”按钮时,选定的图像将被上传到 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()

switch(requestCode){
   case UPLOAD_FLICKR:
         Log.i("ordering","beforeResultCode");
         if(resultCode == RESULT_OK){   
             String flickr_source = data.getStringExtra("flickr_source");
             Log.i("flickr",flickr_source);
         }
         break;
}

我有一个名为 FlickrjActivity 的 Activity,它创建了一个名为 UploadPhotoTask 的 AsyncTask UploadPhotoTask 有一个名为 onPostExecute 的方法,它有一个参数是上传照片的 Flickr 照片 ID 作为 Flickr API 的响应

protected void onPostExecute(String response) {
   Log.i("photoID",response);
}

这是 FlickrjActivity 的 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);
    }
}

我的预期过程是主要活动创建一个调用 FlickrjActivity 的意图,该意图将创建 UploadPhotoTask 以将照片上传到 Flickr,获取 photoID,然后使用 setResult(RESULT_OK,intent); 和 @987654328 将此 ID 返回到主要活动@

但是在我按下保存按钮后,onActivityResult()Log.i("ordering","beforeResultCode"); 调用后在上传运行之前将消息打印到 Logcat,因此 if(resultCode == RESULT_OK) 内的块从未被调用,因为 onActivityResult() 不会在上传完成后再次被调用。那么为什么onActivityResult()finish()FlickrjActivity 之前被调用?

【问题讨论】:

    标签: android android-intent flickr onactivityresult flickrj


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 2010-11-02
      • 2018-10-23
      相关资源
      最近更新 更多