私の Android アプリでは、Parse.com オンライン データベースを使用してデータを保存しています。onCreate()
私のアクティビティのメソッドでは、メソッドを使用しfindInBackground()
て非同期的にデータを読み込みます。
このfindInBackground()
メソッドは、最初はアクティビティに再接続せず、永久に実行を続けます。ただし、電話のホームボタンをクリックしてからアプリを再ロードすると、findInBackGround()
メソッドは最終的に再接続してデータをロードします。
私はしたいと思います:
findInBackground()
アプリをリロードする必要なく、メソッドをアクティビティに再接続させる- データの読み込み中に読み込みイメージ (アニメーション gif ?) を表示します。
私の問題について何かアドバイスはありますか?
よろしくお願いいたします。
アレックス
PS: 私はすでに解析の find() メソッドを試しました。アプリと自動的に再接続しても、データが読み込まれるまで呼び出し元のアクティビティの UI をブロックするため、正しい方法ではないと思います。
================================================== =============================== 私はついに私の質問に対する答えを見つけました:
findCallBack クラスのメソッド内に listView を設定するコードを配置しました。したがって、findInBackground() メソッドの結果は、実行が終了した後にのみ使用するようにしています。以前は、findCallBack クラスの外側に listView を設定するコードを配置していたので、コード内で後で実行されたとしても、実際には findInBackground() が終了する前に実行されたため、機能しませんでした。
読み込み中の画像については、このサイトで見つかった回答を使用しました。これは、適切な時点 (findInBackground() の前後) で ProgressDialog をアクティブ化および停止することで構成されています。
startLoading(); //Show the loading image query.findInBackground(new FindCallback() { public void done(List<ParseObject> allQuestionsVal, ParseException e) { if (e == null) { for(int i = 0; i<=allQuestionsVal.size()-1;i++){ ParseObject questionVal = allQuestionsVal.get(i); Question question = new Question(questionVal.getObjectId(), questionVal.getString("FIELD1"), questionVal.getString("FIELD2"), allQuestions.add(question); } stopLoading(); //Remove the loading image //Use the result of the Query (allQuestions) to populate listVIew ListView list = (ListView) findViewById(R.id.all_questions); AllQuestionsAdapter adapter=new AllQuestionsAdapter(AllQuestions.this, allQuestions); list.setAdapter(adapter); } else { stopLoading(); //Remove the loading image } } });
保護された ProgressDialog proDialog;
protected void startLoading() { proDialog = new ProgressDialog(this); proDialog.setMessage("loading..."); proDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); proDialog.setCancelable(false); proDialog.show(); } protected void stopLoading() { proDialog.dismiss(); proDialog = null; }
PS: コメントは大歓迎です :)