tôi có phương thức cập nhật cơ sở dữ liệu SQLite và đặt bên trong AsyncTask này để làm cho nó nhanh hơn và đáng tin cậy hơn.cách chuyển hai loại dữ liệu khác nhau sang AsyncTask, Android
tuy nhiên có hai phần dữ liệu cần thiết để cập nhật cơ sở dữ liệu. một là một số nguyên và một là một đối tượng của lớp PrimaryKeySmallTank được hiển thị ở đây.
sử dụng mảng params trong đối số của phương thức doInBackground của AsyncTask, tôi có thể chuyển số nguyên trong, nhưng nếu tôi có hai loại dữ liệu khác nhau như ở đây thì sao?
nếu một số nguyên được lưu trữ trong int ... params [0] tôi không thể lưu trữ một đối tượng kiểu khác trong tham số [1], vậy điều gì có thể được thực hiện về điều này?
đối tượng tôi muốn vượt qua vào AsyncTask
public class PrimaryKeySmallTank {
int contractNumber;
int customerCode;
int septicCode;
String workDate;
int workNumber;
}
các AsyncTask mà tôi đang sử dụng
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
bạn có thể chuyển đối tượng được yêu cầu trong hàm tạo UpdateInfoAsyncTask(). Chỉ cần tạo một hàm tạo cho tác vụ không đồng bộ của bạn –
mã được đặt bên trong phương thức doInBackground có quyền truy cập vào dữ liệu là biến thành viên của lớp UpdateAsyncTask không? như tôi có thể tạo biến thành viên của lớp và chuyển dữ liệu vào hàm tạo cho – Kevik
@Kevik, Có. Tất nhiên bạn có thể. Như bạn thấy trong câu trả lời của tôi, tôi đã viết rằng 'sử dụng intValue' trong phương thức' doInBackground'. Bạn có thể sử dụng các biến thành viên đó và khi bạn cần trong phạm vi lớp đó. :) –