我AsyncTask
用来在社交媒体上发布一些状态。
private class PostOnSocialMedia extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
pDialog.setTitle(R.string.posting_status_on_social_media);
Log.d(TAG, "onPreExecuteCalled.");
}
@Override
protected String doInBackground(String... params) {
Log.d(TAG, "doInBackground.");
currentActivity.this.twitter.tweet(params[0]);
currentActivity.this.facebook.post(params[0]);
currentActivity.this.googlePlus.share(params[0]);
return null;
}
@Override
protected void onPostExecute(String result) {
if (pDialog.isShowing()) {
pDialog.dismiss();
}
// Start next Activity when posted on all social media.
Intent intent = new Intent(currentActivity.this,
nextActivity.class);
intent.putExtra("userMatches", userMatches);
startActivity(intent);
Log.d(TAG, "onPostExecute.");
}
}
当用户未登录时,可以说,Twitter
我必须启动一个新Intent
页面来显示 twitter 页面(以便用户可以登录)。这会导致流程返回AsyncTask
并调用onPostExecute()
方法。并开始了新的活动。
但我不想要这个。我想要的是用户登录Twitter
然后它将返回到应用程序(当用户单击登录流返回到当前活动时。但是该活动被创建为一个新活动,而不是我开始调用社交媒体帖子的活动)。当回到应用程序时,我调用一个Twitter
类的方法来继续完成未完成的发布任务。一旦完成,那么只有我想去下一个活动。
那么,有没有办法处理这种情况呢?
编辑:
是否可以使用 onSaveInstanceState(Bundle savedInstanceState)
and来解决这个问题onRestoreInstanceState(Bundle savedInstanceState)
?