Привет, это мой первый вопрос в stackoverflow, извините, если я что-то не так.Android - Как сделать загрузку при первом запуске
Моя проблема заключается в том, что, когда я запускаю приложение в первый раз, мне нужно написать данные SQL в базе данных. Если я сделаю это в onCreate(), в то время как он пишет sql, он не показывает View, так что это похоже на замораживание. И если я делаю загрузчик там, это не показано, потому что прежде всего ti хочет закончить все oncreate и после этого показать View. Затем я запустил AlertDialog, если SQL пуст, чтобы проинформировать пользователя о необходимости «установки», и после подтверждения мне захотелось сделать окно загрузки при запуске вставки SQL ...
Так что мой вопрос: как сделать загрузка ... OnCreate в управлении деятельностью ... может у меня какой-то хорошая идея ... вот код я сделал:
private DatabaseHandler db = new DatabaseHandler(this);
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
context = this;
if(db.getWordsCount() == 0)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Instalation needed");
builder.setMessage("Database need to be installed");
builder.setPositiveButton("Ok", dialogClickListener);
builder.setNegativeButton("Close", dialogClickListener);
builder.show();
}
}
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
ProgressDialog progress = new ProgressDialog(context);
progress.setTitle("Instalation");
progress.setMessage("Please wait...");
progress.show();
db.insertWords(db);
progress.cancel();
break;
case DialogInterface.BUTTON_NEGATIVE:
finish();
break;
}
}
};
Возможно создать AsyncTask (отдельный поток), который выполняет часть базы данных. Вы можете сделать экран загрузки в основном потоке пользовательского интерфейса, который останавливается, когда задача будет завершена. – keyser