sql >> Databáze >  >> RDS >> SQLite

Jak používat třídu databasehelper ve třídě asynctask pracující na jiné třídě

Zkuste toto:

 private class FetchData extends AsyncTask<Context, Void, Void> {
     protected Long doInBackground(Context... c) {
         Context myContext = c[0];
// Do your things here....
     }


     protected void onPostExecute() {
// Insert your post execute code here
     }
 }

Tuto AsyncTask můžete nazvat následujícím řádkem – za předpokladu, že jste v aktivitě:

 new FetchData().execute(this);

Pokud nemůžete změnit zpomalení AsyncTask, můžete zkusit použít statickou proměnnou - i když to není tak efektivní a hezké jako zpomalení AsyncTask. Zkuste toto:

Class myStatic{
private  static Context mContext;


static public void setContext(Context c);
mContext = c;
}

static public Context getContext(){
return mContext;
}

}

a v hlavním kódu, než zavoláte AsyncTask, zavolejte toto:

myStatic.setContext(this);

v metodě doInBackground v AsyncTask přidejte toto:

Context myContext = myStatic.getContext();



  1. Co je Microsoft Access? Stručný úvod pro nové uživatele

  2. Jak odebrat sloupec v SQL Server pomocí T-SQL

  3. Jak SHOWPLAN_XML funguje v SQL Server

  4. Proč je použití příkazu připraveného pomocí mysql bezpečnější než použití běžných funkcí escape?