私は大量のSQL操作(あまりにも多くの挿入)をアプリケーションの冒頭に作成する必要があります。私はこのようなスプラッシュ画面を持っています。 (インストール後)を実行し、最初は必ずuiスレッド外のワーカークラス
public class SplashScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}
@Override
protected void onResume() {
super.onResume();
...
new SetupDataBaseWorker(this).execute();
}
private class SetupDataBaseWorker extends AsyncTask<Void, Void, Void> {
private SqliteManager db_sql;
private Activity activity;
public SetupDataBaseWorker(Activity activity) {
this.activity = activity;
db_sql = new SqliteManager(this.activity);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
...
showDialogLoading();
...
}
@Override
protected Void doInBackground(Void... urls) {
...
db_sql.inserting();
...
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
this.activity.startActivity(new Intent(SplashScreen.this, MainActivity.class));
this.activity.finish();
}
}
}
1-、私は10秒(私はそれが実行中のスクリプトだと仮定...)のために空白の画面を持って、そして私のアプリはmainActivityになり、後に。
2つ目のアプリを実行すると、1秒間空白の画面が表示され、MainActivity(SplashScreenレイアウトも表示されません)に移動します。 それは、ワーカースレッドの外で作業していないワーカークラスのようです...それを達成するために何をする必要がありますか?私はすでにこのワーカーをサービスに入れてみましたが、それでも同じです。
あなたは 'SetupDataBaseWorker()。execute();'を使用していますが、これは 'new SetupDataBaseWorker(this).execute();'ではなく、 'db_sql = new SqliteManager(this.activity );または私は間違っていますか? – michoprogrammer
'showDialogLoading'はそのメソッドを動作させ、実際にロードダイアログを表示しますか? – njzk2
皆さん、これは*抽象化です* ...コード全体が実行中です – PMateus