私はアンドロイドの初心者で、スプラッシュスクリーンの後に 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);
}