0

私は Android/Phonegap アプリを開発しています。以下は私のコードです:

public class SharePointProjectActivity extends DroidGap {
  /* SharedPreferences are used so that any initial setup can be done, 
     * i.e operations that are done once in life-time of an application
     * such as coping of database file to required location, initial wait 
     * request page,etc.
  */
  private SharedPreferences myPreferences;
  private Boolean registration;
  private static final String PREFS_NAME = "Register";
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    registration = myPreferences.getBoolean(PREFS_NAME, false);
    if (!registration) {
    //this code would load index1.html which would just display "Initialization is going on please wait"
      super.loadUrl("file:///android_asset/www/index1.html");
      try {
        //some code to copy the database files
      }
      catch (IOException e) {
        //some exception during the operation
      }
      //once the database file are copied i want to load the login page.Remember this would happen during installation only, successive runs (launch) would directly load the login page i.e index2.html
      super.loadUrl("file:///android_asset/www/index2.html");
      SharedPreferences.Editor editor = myPreferences.edit();
      editor.putBoolean(PREFS_NAME, true);
      editor.commit();
    } else {
      super.loadUrl("file:///android_asset/www/index.html");
    }
  }

問題: インストール中に、両方のページが重ねて読み込まれます。つまり、index2.html が index1.html の上に読み込まれます。

予期される: コピー プロセス中に index1.html が表示され、それが完了すると、index1.html がフェードアウトし、index2.html が読み込まれるはずです。

編集済み: インストール中に 2 つの html ファイルを使用します。最初のファイルは、インストールの進行中にユーザーに待機するように求める画像を表示し、すべてがうまくいけばログイン ページ (2 番目のファイル) をロードする必要があります。これまでのところこれは機能していますが、戻るボタンをクリックするとコントロールが最初のページに移動します。前もって感謝します、

ナナシ

4

1 に答える 1

1

AsyncTaskを使用してみることができます。これを使用すると、UIスレッドを使用しないため、ユーザーがアプリを操作できるようになります。

public class LoadDataTask extends AsyncTask<Void, Void, Void> {
      protected void onPreExecute() {
            SharePointProjectActivity.this.super.loadUrl("file:///android_asset/www/index1.html");
      }

      protected void doInBackground(final Void... args) {
         ... do you db stuff ...
         return null;
      }

      @Override
      protected void onPostExecute(Void result) {
           SharePointProjectActivity.this.super.loadUrl("file:///android_asset/www/index2.html");
      }
   }

非同期タスクを開始するには、

new LoadDataTast().execute();
于 2012-11-29T08:31:50.330 に答える