SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Android SQLiteDB nie kończy dodawania wartości

Naprawiłem to, tworząc IntentService z wewnątrz niej AsyncTask i wywołując ją w ramach onPause. Teraz działa bezbłędnie. Oto kod w onPause:

    Intent saveIntent = new Intent(this, SaveService.class);
    startService(saveIntent); 

A oto moja klasa SaveService:

public class SaveService extends IntentService
{
    private ArrayList<Ingredient> ingredientsArray;
    private ArrayList<Unit> unitsArray;
    private DatabaseHelper dbHelper;

    public SaveService(String name) 
    {
        super(name);
    }

    public SaveService() 
    {
        super("SaveService");
    }

    @Override
    protected void onHandleIntent(Intent intent) 
    {
        //save data to database
        dbHelper = new DatabaseHelper(getApplicationContext());
        ingredientsArray = QuickBakeConverterPro.ingredients;
        unitsArray = QuickBakeConverterPro.units;

        new SaveAllTask().execute();
    }

    private class SaveAllTask extends AsyncTask<Void, Void, Void>
    {
        @Override
        protected Void doInBackground(Void... args) 
        {
            //open database
            try 
            {
                dbHelper.openDatabase();
            }catch(SQLException sqle)
            {    
                throw sqle;  
            }

            dbHelper.deleteAll();

            //add all ingredients & units
            for (int i = 0; i < ingredientsArray.size(); i++)
                dbHelper.addIngredient(ingredientsArray.get(i));
            for (int i = 0; i < unitsArray.size(); i++)
                dbHelper.addUnit(unitsArray.get(i));

            dbHelper.close();

            return null;
        }
    }//SaveAllTask
}//class SaveService



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy wywoływana jest metoda SQLiteOpenHelper onCreate?

  2. Utwórz bazę danych w SQLite

  3. Jak działa SQLite Lower()

  4. Nie można wstawić rekordu do bazy danych SQLite z usługi Firebase Message Service, gdy aplikacja jest w tle lub w stanie zamkniętym

  5. Z wyjątkiem SQLite