0

私のアプリケーションでは、最初にホームアクティビティを表示しています。ホームアクティビティでは、Webサービスから値を取得し、値を解析してユーザーに表示します。ホームアクティビティのユーザーをクリックすると、記事の表示アクティビティに表示されます。それは再びホームアクティビティになります。それは何度も何度もWebサービスを呼び出し、時間がかかる値を解析します。

Webサービスの解析値を初めて保存し、すべてのアクティビティの値を取得する方法。Webサービスを何度も呼び出す代わりに、誰かが例を挙げられますか?

4

2 に答える 2

0

初めて応答を取得したときにブール値を設定します。また、Web サービスを呼び出す前に、常に変数を確認してください。

また、アクティビティの Application クラス変数または静的/非静的変数に応答値を格納します。

boolean callWebService = true;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //your code here

    if(callWebService){
        //call webservice in background thread -> Async Task, Service, whatever
        callWebService = false;
    }else{
        //process stored response
    }

}

また、設定の変更が処理されない場合、アクティビティが破棄され、onCreate が再度呼び出されることにも注意してください。それらのシナリオも処理します。

お役に立てれば。

于 2012-12-06T08:06:05.307 に答える
0

サービスを呼び出している場所を示すコードの小さなスニペットを表示できますか。

また、注意してください

サービス中のonCreateメソッドは、サービスの存続期間全体で 1 回だけ実行されます。ただし、 を呼び出すことで、onStartCommandメソッドを複数回呼び出すことができますstartService。サービスが破棄されてから再度実行さonCreateれると、 が再度呼び出されます。

これは、この文書が伝えていることです:

onCreate()

システムは、サービスが最初に作成されたときにこのメソッドを呼び出して、1 回限りのセットアップ手順を実行します (onStartCommand()またはを呼び出す前にonBind())。サービスが既に実行されている場合、このメソッドは呼び出されません。

于 2012-12-06T07:17:23.920 に答える