Я собираюсь создать приложение, которое позволит нам получить все песни на SD-карте, а затем перевести список песен в SQLite на службу. В следующем, я хочу, чтобы вся песня была показана на экране активности и отображения прогресса. У меня возникла проблема при запуске: в первый раз он ничего не отображает (просто покажите диалог прогресса навсегда). Но когда я запускаю его снова (второй раз), он работает хорошо.Данные Android не вставлены в базу данных при первом запуске
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListSongs = new ArrayList<>();
lvSong = (ListView) findViewById(R.id.lv_song);
Intent it = new Intent(this, ScanSongService.class);
startService(it);
mDbHelper = new DBHelper(this);
mListSize = mDbHelper.getDBSize();
Log.d(TAG, "-------- mListSize on activity: " + mListSize);
new ScanSongAsyncTask(this).execute();
}
Пример из кода выше:
На службе, я загрузил всю песню и добавить к БД. Я зарегистрировался, все в порядке.
В первый раз, mListSize 0.
Во второй раз, mListSize 12 (количество песен на SD-карте).
где вы добавляете данные в базу? –
при запуске службы 'startService (it);' потребуется некоторое время, прежде чем он завершит свою работу, поэтому вызов 'mDbHelper = new DBHelper (this);' не приведет к правильной (или любой) службе cuz данных, все еще запущенной или даже вставляемой еще не началось. вам нужно будет вызвать что-то из службы, когда работа будет завершена. – Yazan
@ExceptionLover: Как я уже говорил по этой теме, я загружаю всю песню (.mp3) с SD-карты –