为什么在上传到Flickr之前调用onActivityResult()会使用Flickrj android完成
我需要为我的应用程序做一个这样的功能:当用户按下“保存”按钮时,所选图像将上载到Flickr,然后从Flickr获取上载图像的源以存储到数据库中。我使用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
//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()
调用了sinceLog.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);
}
}