comment passer deux types de données différents à AsyncTask, Android
j'ai une méthode qui ne une base de données SQLite mise à jour et de mettre cela à l'intérieur d'une AsyncTask pour le rendre plus rapide et plus fiable.
cependant il y a deux morceaux de données qui sont nécessaires pour mettre à jour la base de données. l'un est un Entier et l'autre est un objet de la PrimaryKeySmallTank classe qui est montré ici.
à l'aide du tableau params dans les arguments de la méthode doInBackground de AsyncTask, je peux passer un nombre Entier, mais si j'ai deux différents types de données comme ici?
si un nombre entier est stocké dans int... params[0] je ne peut pas stocker un autre type d'objet dans les params[1], de sorte que ce qui peut être fait à ce sujet?
objet que je veux faire passer dans les AsyncTask
public class PrimaryKeySmallTank {
int contractNumber;
int customerCode;
int septicCode;
String workDate;
int workNumber;
}
l'AsyncTask que je suis en utilisant
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
source d'informationauteur Kevik | 2013-08-01
Vous devez vous connecter pour publier un commentaire.
Vous devez créer un constructeur.
Utiliser
Juste passer l'objet dans le constructeur de votre async task et, plus tard, l'utilisation de cet objet dans doinBackground().Vous pouvez créer constructeur et transmettez le à votre objet de la manière suivante:
Dans votre code passer l'objet requis:
vous pouvez également essayer quelque chose comme cela :
Juste une simple remarque. De cette façon, il convient de rappeler que vous ne pouvez pas transmettre de données primitifs (parce que les primitifs ne peut pas être stockée comme un Objet). Pour une primitive de données, le seul moyen est d'avoir les wrappers (comme pour les Entiers, les Booléens, etc.) converti ensuite comme d'habitude. Par exemple,