[英]Perform remaining task of AsyncTask that was started in previous instance of the same activity
我正在使用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)
和onRestoreInstanceState(Bundle savedInstanceState)
解决此问题?
在调用asynctask之前,请确保您的用户在两个平台上均已登录,然后再调用asynctask,因为现在在这种情况下,用户可以进行多种组合,所以我的建议是首先确保用户在两个facbook上均已登录,tiwtter等等,然后调用此asynctask,这样就不必让asynctask等待
AsyncTask used for background Process.
So you have to check All the condition before calling asynctask and then used.
通常,AsyncTasks将在后台执行操作而不阻塞UI-Thread。 如果您想让主线程(= UI-Thread)等待AsyncTask,则可以不使用AsyncTask而直接执行。
如果您想等待,请尝试yourTask.get();
,这应该使您的主线程等待Task的结果。 在此处查找有关get()的更多信息。
我通过使用一个static
变量解决了我的问题,该变量在重新创建Activity
之前就设置为true
,并且当Activity
执行在onCreate
我使用此变量来确定是否重新创建此Activity,如果是,则调用method来执行剩余的任务。
完成发布后,我从成功完成发布的Twitter
类中调用一种活动方法,该方法称为在社交媒体Twitter
进行发布的方法。
活动中的方法:
public static void postDone() {
// Go to next activity
}
来自Twitter
类的电话:
MyActivity.postDone();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.