0

私はアンドロイドの初心者で、スプラッシュスクリーンの後に OnCreate メソッド中に進行状況ダイアログを表示しようとしています。現在、スプラッシュスクリーンの後、画面が約 5 秒間黒くなり、レイアウトが表示されます。バックグラウンド操作を行うために Asynctask を使用しているため、アプリの初期化時に 5 秒間の黒の代わりに進行状況ダイアログが表示されない理由がわかりません。これは、Android 3.0 以前でのみ発生します。以降のすべての SDK リリースでは、進行状況ダイアログが正しく表示されます。どんな助けでも大歓迎です。

@Override
public void onCreate(Bundle savedInstanceState) {       
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    //wakelock
    PowerManager pM = (PowerManager)getSystemService(Context.POWER_SERVICE);
    wL = pM.newWakeLock(PowerManager.FULL_WAKE_LOCK, "Screen Dim");
    wL.acquire();


    LoadingData dataLoaded = new LoadingData();
    dataLoaded.execute("");

    ---code for UI Thread---

    }//--End onCreate

private class LoadingData extends AsyncTask<String, Integer, String> {
    @Override
    protected String doInBackground(String... sUrl) {
        try {
            //TWITTER API CODE HERE

            } catch (Exception e) {
                Log.e("log_tag", "Error parsing data "+ e.toString());
            }
            publishProgress(33);

            //DOWNLOADING IMAGES CODE HERE
            try{

            }catch(Exception e){

            } 
            publishProgress(66);

            //FOREX RATES CODE HERE
            try {

        }catch(JSONException e)        {
         Log.e("log_tag", "Error acquiring forex data "+e.toString());
        }
        publishProgress(100);


        return null;
    }


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        dialog = new ProgressDialog (GoldandSilverCoinCalculatorActivity.this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        dialog.setMessage("Loading... please wait");
        dialog.setIndeterminate(false);
        dialog.setMax(100);
        dialog.setProgress(0);
        dialog.show();
    }


    @Override
    protected void onProgressUpdate(Integer... progress) {
        super.onProgressUpdate(progress);
        dialog.setProgress(progress[0]);
    } 

    @Override       
    protected void onPostExecute(String result) {       
        super.onPostExecute(result);       
        dialog.dismiss();

       }


}

----EDIT---- 私の OnResume と OnPause メソッド

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    compass.disableCompass();
    super.onPause();
    wL.release();
    lm.removeUpdates(this);
}



@Override
protected void onResume() {
    // TODO Auto-generated method stub
    compass.enableCompass();
    super.onResume();
    wL.acquire();
    lm.requestLocationUpdates(towers, 500, 1, this);
}
4

2 に答える 2

3

AsyncTask で進行状況ダイアログを表示するには、AsyncTask の onPreExecute() メソッドを使用します

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
        pDialog = new ProgressDialog(YOUR_ACTIVITY.this);
        pDialog.setMessage("Please wait...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);   // if true, it enables to dismiss dialog with back button
        pDialog.show();
    }
于 2012-10-17T18:55:34.693 に答える
0

コードのすべての行を1つずつコメントします...5秒かかるものを確認します

私はあなたの問題はその行だと思います:

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

ウェイクロックを取得した後ではなく、onCreateの上部に配置する必要があります

于 2012-10-17T19:11:46.340 に答える