0

アプリケーションの最初のアクティビティは、データベースをチェックし、必要に応じてアップグレードすることです。

@Override
public void onCreate(Bundle savedInstanceState) {
    setTheme(getThemeFromPreferences(this));
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
}

@Override
public void onResume() {
    super.onResume();
    //Test et remplissage de la BDD
    ProgressBar progressBar = (ProgressBar) findViewById(R.id.firstProgressBar);
    DatabaseFeeder.testAndFeed(this, progressBar);
    //Launch welcoming activity
    Intent i = new Intent(this, AccueilActivity.class);
    startActivity(i);
}

DatabaseFeeder.testAndFeed 静的メソッドはアセットから読み取るため少し遅く、データベースがいっぱいになるまでに 5 秒ほどかかる場合があります。

問題は、フィーダーが終了する前に contentView が設定されていないことです。アクティビティが 5 秒間すべて空白になり、完全に満たされた進行状況バーを含むコンテンツ ビューとしてポップします。

どうしてこんなことに ?

4

2 に答える 2

1

非同期タスクで次のコードを実行します。

 DatabaseFeeder.testAndFeed(this, progressBar);

これにより、必要なビューをレンダリングするためにアプリケーションのメイン スレッドが解放されます。また、長時間実行される操作をアプリケーションのメイン スレッドから分離することを常にお勧めします。

于 2015-10-16T12:48:29.257 に答える