0

私のアプリケーションでは、アプリの起動時にサーバーからレコードを取得するために 2 つの Web サービスを呼び出す必要があります。非同期タスクとスプラッシュ画面でそれを行いましたが、うまく動作しません。aynsch タスクが最初に操作を完了するのを待ってから、次のアクティビティに移動します。

ユーザーが次のアクティビティに移動するのをブロックすることなく、アプリの起動時にバックグラウンドで webservice を呼び出す必要があります。

任意の助けをいただければ幸いです。

4

3 に答える 3

1
**call Asyn server call wherever you need**
getServerResponse();
"startnewactivity" here
finish current activity here 


**Asyn server call**
public void getServerResponse(){
    new AsyncTask<Void, Void, Object>() {

        @Override
        protected Object doInBackground(Void... params) {
            //write your server response code here
            return null;
        }

        @Override
        protected void onPostExecute(Object result) {
            super.onPostExecute(result);
        }
    }.execute();
}
于 2013-09-03T06:32:14.277 に答える
0

非同期タスクを使用すると、バックグラウンド スレッドで Web サービス呼び出しを実行でき、UI スレッドはブロックされず、runonuithread を使用してバックグラウンドで次のアクティビティを呼び出すことができますが、シームレスなソリューションになります。そのため、最初にバックグラウンド プロセスが完了するのを待つことをお勧めします

于 2013-09-03T06:22:55.747 に答える
0

IntentServiceを使用して詳細を取得し、保存できます。

または、 Serviceを使用してアクティビティにバインドし、データを取得したときにデータを送信できます。

さらに、2 番目のアクティビティに移動し、AsyncTask を呼び出して詳細を取得し、完了したら UI を更新することができます。

取得したデータがグローバルで、複数のアクティビティで使用されている場合は、それをApplicationクラスに格納し、stateChangeListener を追加して、バックグラウンド サービスまたは AsyncTask から更新されたときに通知を受け取ります。

于 2013-09-03T06:22:02.460 に答える