У меня есть код, использующий класс AsyncTask для заполнения спискаView с несколькими контактами из базы данных.Android - класс AsyncTask и метод Execute
@Override
protected void onResume()
{
super.onResume();
new MyTask().execute((Object[]) null);
} // end method onResume
1.- Почему я прохожу это: (Object[]) null)
в качестве аргумента?
Смотрите код AsyncTask:
private class MyTask extends AsyncTask<Object, Object, Cursor>
{
//used for database conection purpose
ConectToDatabase databaseConnector =
new ConectToDatabase(ThisClass.this);
@Override
protected Cursor doInBackground(Object... params)
{
databaseConnector.open();
return databaseConnector.getMyContacts();
}
// use the Cursor returned from the doInBackground method
@Override
protected void onPostExecute(Cursor result)
{
//My cursorAdadper defined in early code
contactAdapter.changeCursor(result);
databaseConnector.close();
}
}
Другой AsyncTask вопрос:
delete.execute(new Long[] { rowID });
2.- Почему я прохожу это: (new Long[] { rowID })
в качестве аргумента, а не просто (RowId)?
rowID - длинный тип, который содержит идентификатор контакта, выбранного в моем предыдущем классе. Это расширилось в ListActivity. Этот предыдущий класс был заполнен всеми моими контактами, полученными в моей базе данных. Когда я отправляю данные в этом классе (по намерению), я хочу восстановить данные одного контакта, выбранного в моем предыдущем классе, но в этом случае код выглядит следующим образом: new LoadMyContact().execute(rowID);
, расположенный в методе onResume.
3.- Зачем пропускать только: (rowID)
в качестве аргумента?
delete.execute(new Long[] { rowID });
находится внутри меню, когда подтверждение пользователя удалить контакт мы выполнить это предложение код будет это для удаления (мы внутри на кнопке мыши):
@Override
public void onClick(DialogInterface dialog, int button)
{
final ConectToDataBase databaseConnector =
new ConectToDataBase(MySecondClass.this);
AsyncTask<Long, Object, Object> deleteTask =
new AsyncTask<Long, Object, Object>()
{
@Override
protected Object doInBackground(Long... params)
{
databaseConnector.deleteContact(params[0]);
return null;
}
@Override
protected void onPostExecute(Object result)
{
finish();
delete.execute(new Long[] { rowID });
}
}; // end new AsyncTask
delete.execute(new Long[] { rowID });
}/
Помощь этим три вопрос и спасибо.
В Java, 'Long! = Long' –