0

私のコードでは、設定を介してデータベースに情報をインストールするためのブール値があります。正常に動作しますが、アプリに追加する情報が大量にあり、情報が sqlite に追加されている間 (インストール時のみ) に黒い画面が表示されるという問題があります。アプリがインストール プロセスにあることをユーザーが認識できるように、プログレス スピナーを追加するにはどうすればよいですか。黒い画面を見つめると、アプリが壊れていると思うのではないかと心配しています。

        /** Insert list into db once */
    if (pref.getBoolean("isFirst", true)) {
        readBLContactsfromAssetsXMLToDB("list.xml");
        pref.edit().putBoolean("isFirst", false).commit();
    }

    addQuickActions();
}
4

1 に答える 1

1

まず、時間がかかるプロセスを実行するためにAsyncTaskを使用できます。あなたがそれを認識していない場合は、 it allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.

ただし、それを使用しないと主張する場合は、UI スレッドをブロックしているため、ダイアログを表示しながら作業を同時に行うことはできません。長いプロセスのためのバックグラウンド スレッドが必要であり、UI スレッドで進行状況ダイアログを表示する必要があります。

オンラインの例はたくさんありAsyncTaksます。サンプル用:

private class OuterClass extend Activity{
    //....

    @Override
    public void onCreate(Bundle savedInstanceState) {
        new performBackgroundTask ().execute();
    }
    //....
    private class performBackgroundTask extends AsyncTask < Void, Void, Void > 
     {
        private ProgressDialog dia;
        // This method runs in UI thread before the background process starts.      
        @Override
        protected void onPreExecute(){
            // Show dialog
            dia = new ProgressDialog(OuterClass.this);
            dia.setMessage("Installing...");
            dia.show();   
        }

        @Override
        protected Void doInBackground(Void... params) {
            // Do all the stuff here ... 
            addQuickActions();            
        }

        // Ececutes in UI thread after the long background process has finished
        @Override
        protected void onPostExecute(Void result){
              // Dismiss dialog 
              dia.dismiss();
        }
      }
}

Android でアクティビティを開始する前に進行状況ダイアログを表示する方法が表示される場合があります。

お役に立てれば。

于 2013-06-27T04:03:50.903 に答える