私のアプリケーションでは、アプリの起動時にサーバーからレコードを取得するために 2 つの Web サービスを呼び出す必要があります。非同期タスクとスプラッシュ画面でそれを行いましたが、うまく動作しません。aynsch タスクが最初に操作を完了するのを待ってから、次のアクティビティに移動します。
ユーザーが次のアクティビティに移動するのをブロックすることなく、アプリの起動時にバックグラウンドで webservice を呼び出す必要があります。
任意の助けをいただければ幸いです。
私のアプリケーションでは、アプリの起動時にサーバーからレコードを取得するために 2 つの Web サービスを呼び出す必要があります。非同期タスクとスプラッシュ画面でそれを行いましたが、うまく動作しません。aynsch タスクが最初に操作を完了するのを待ってから、次のアクティビティに移動します。
ユーザーが次のアクティビティに移動するのをブロックすることなく、アプリの起動時にバックグラウンドで webservice を呼び出す必要があります。
任意の助けをいただければ幸いです。
**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();
}
非同期タスクを使用すると、バックグラウンド スレッドで Web サービス呼び出しを実行でき、UI スレッドはブロックされず、runonuithread を使用してバックグラウンドで次のアクティビティを呼び出すことができますが、シームレスなソリューションになります。そのため、最初にバックグラウンド プロセスが完了するのを待つことをお勧めします
IntentServiceを使用して詳細を取得し、保存できます。
または、 Serviceを使用してアクティビティにバインドし、データを取得したときにデータを送信できます。
さらに、2 番目のアクティビティに移動し、AsyncTask を呼び出して詳細を取得し、完了したら UI を更新することができます。
取得したデータがグローバルで、複数のアクティビティで使用されている場合は、それをApplicationクラスに格納し、stateChangeListener を追加して、バックグラウンド サービスまたは AsyncTask から更新されたときに通知を受け取ります。