sql >> Databasteknik >  >> RDS >> SQLite

Android SQLiteDB lägger inte till värden

Jag fixade detta genom att skapa en IntentService med en AsyncTask inuti den och anropa den inom onPause. Det fungerar felfritt nu. Här är koden i onPause:

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

Och här är min SaveService-klass:

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. MariaDB JSON_CONTAINS_PATH() Förklarad

  2. Konfigurera Django och PostgreSQL på två olika EC2-instanser

  3. Begäran inställd i Concurrent Manager

  4. Finns det en genväg för SELECT * FROM?