ho un metodo che fa aggiornare un database SQLite e lo metto dentro un AsyncTask per renderlo più veloce e più affidabile.come passare in due diversi tipi di dati ad AsyncTask, Android
tuttavia ci sono due pezzi di dati necessari per aggiornare il database. uno è un numero intero e l'altro è un oggetto della classe PrimaryKeySmallTank mostrata qui.
utilizzando la matrice params negli argomenti del metodo doInBackground di AsyncTask, posso passare un intero in, ma cosa succede se ho due diversi tipi di dati come qui?
se un numero intero è memorizzato in parametri ... [0] non posso memorizzare un oggetto di tipo diverso in param [1], quindi cosa si può fare al riguardo?
oggetto voglio passare nel AsyncTask
public class PrimaryKeySmallTank {
int contractNumber;
int customerCode;
int septicCode;
String workDate;
int workNumber;
}
l'AsyncTask che sto usando
public class UpdateInfoAsyncTask extends AsyncTask<Integer, Void, Void>{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
}
@Override
protected Void doInBackground(Integer... params) {
Integer mIntegerIn = params[0]; // this is what I want to do, example
PrimaryKeySmallTank mPrimaryKeySmallTank = params[1]; // different data type to pass in
Database db = new Database(InspectionInfoSelectionList.this);
db.openToWrite();
db.updateWorkClassificationByRow(mPrimaryKeySmallTank, mIntegerIn);
db.close();
return null;
}
} // end UpdateInfoAsyncTask
è possibile passare l'oggetto richiesto nel costruttore UpdateInfoAsyncTask(). Basta creare un costruttore per la tua attività asincrona –
il codice inserito nel metodo doInBackground ha accesso ai dati che sono una variabile membro della classe UpdateAsyncTask? come posso creare variabili membro della classe e passare dati nel costruttore per quello – Kevik
@Kevik, Sì. Certo che puoi. Come puoi vedere nella mia risposta, ho scritto che 'usa intValue' nel metodo' doInBackground'. È possibile utilizzare tali variabili membro come e quando necessario nell'ambito di questa classe. :) –