0

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ページを表示Twitterするために新しいページを開始するIntent必要があります(ユーザーがログインできるようにするため)。これにより、フローが戻りAsyncTask、メソッドが呼び出されますonPostExecute()。そして、新しいアクティビティが開始されます。

しかし、私はこれを望んでいません。私が望むのは、ユーザーがログインしTwitterてからアプリケーションに戻ることです(ユーザーがログインフローをクリックすると、現在のアクティビティに戻ります。ただし、アクティビティは、ソーシャルメディア投稿への呼び出しを開始したものではなく、新しいアクティビティとして作成されます) )。アプリケーションに戻ると、Twitterクラスのメソッドを呼び出して、未完了の投稿タスクを完了します。そしてそれが終わったら、私だけが次の活動に行きたいです。

それで、とにかくこの状況を処理する方法はありますか?

編集:と を使用
てこれを解決することは可能 ですか?onSaveInstanceState(Bundle savedInstanceState)onRestoreInstanceState(Bundle savedInstanceState)

4

4 に答える 4

0
AsyncTask used for background Process.

So you have to check All the condition before calling asynctask and then used.
于 2013-07-09T07:58:19.087 に答える
0

asynctask を呼び出す前に、ユーザーが両方のプラットフォームにログインしていることを確認してから、asynctask を呼び出します。この場合、ユーザーが実行できる組み合わせはたくさんあるため、私の提案は、最初にユーザーが両方の facbook、tiwtter にログインしていることを確認することです。など、この asynctask を呼び出して、asynctask を待機させる必要がないようにします

于 2013-07-09T07:56:03.737 に答える
0

を再作成する直前にstatic設定された変数を使用して問題を解決し、実行時にこの変数を使用してこのアクティビティが再作成されるかどうかを判断し、そうであればメソッドを呼び出して残りのタスクを実行します。 trueActivityActivityonCreate

Twitter投稿が完了すると、投稿が成功したクラスから、ソーシャル メディアに投稿するメソッドを呼び出すアクティビティのメソッドを呼び出します。

活動中の方法 :

public static void postDone() {
    // Go to next activity
}

Twitterクラスからの呼び出し:

MyActivity.postDone();
于 2013-07-09T16:04:46.917 に答える