Mam metodę, która aktualizuje bazę danych SQLite i umieszczam ją w AsyncTask, aby była szybsza i bardziej niezawodna.jak przekazywać dwa różne typy danych do AsyncTask, Android
Istnieją jednak dwie części danych, które są potrzebne do aktualizacji bazy danych. jeden to Integer, a drugi to obiekt klasy PrimaryKeySmallTank, który jest tutaj pokazany.
przy użyciu macierzy params w argumentach metody doInBackground AsyncTask, mogę podać Integer, ale co jeśli mam dwa różne typy danych, jak tutaj?
jeśli liczba całkowita jest zapisana w int ... params [0] nie mogę zapisać innego obiektu typu w parametrach [1], więc co można z tym zrobić?
obiekt chcę przejść do AsyncTask
public class PrimaryKeySmallTank {
int contractNumber;
int customerCode;
int septicCode;
String workDate;
int workNumber;
}
się AsyncTask że używam
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
można przekazać wymagany obiekt w konstruktorze UpdateInfoAsyncTask(). Po prostu utwórz konstruktora dla swojego zadania asynchronicznego –
Czy kod umieszczony wewnątrz metody doInBackground ma dostęp do danych, które są zmiennymi składowymi klasy UpdateAsyncTask? jak mogę utworzyć zmienne członkowskie klasy i przekazać dane do konstruktora dla tego – Kevik
@Kevik, Tak. Oczywiście, że możesz. Jak widać w mojej odpowiedzi, napisałem, że 'use intValue' w metodzie' doInBackground'. Możesz użyć tych zmiennych składowych, gdy są potrzebne w ramach tego zakresu klasy. :) –