Урок 88. AsyncTask. Итоговый результат. Метод get
Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Разобрался, там идёт обратная связь
Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Все привет.
У меня тут возник вопрос, не знаю как лучше делать.
В общем запускаю последовательно два asyncTask'a. На каждый, соответственно, нужно новый объект создавать.
А как удалять старые, что бы память не забивали?
Сейчас присваиваю старым NULL, а хорошее ли это решение? Подскажите как лучше делать?
вот кусок кода:
Вот что с этим gt лучше сделать?
У меня тут возник вопрос, не знаю как лучше делать.
В общем запускаю последовательно два asyncTask'a. На каждый, соответственно, нужно новый объект создавать.
А как удалять старые, что бы память не забивали?
Сейчас присваиваю старым NULL, а хорошее ли это решение? Подскажите как лучше делать?
вот кусок кода:
Код: Выделить всё
GetData gt = new GetData();
gt.execute("http://somediary.ru/get_washes.php?_mode=checkStatus&a1="+Integer.toString(idWash));
try {
res="-11";
res = gt.get(7, TimeUnit.SECONDS);
Log.d(LOG_TAG,res);
if (TextUtils.equals(res, "0") ) {
Log.d(LOG_TAG,"свободно, записываемся");
gt = null;
GetData upgt =new GetData();
upgt.execute("http://somediary.ru/get_washes.php?_mode=tryToWash&a1="+Integer.toString(idWash) );
res = upgt.get(7, TimeUnit.SECONDS);
Log.d(LOG_TAG,"вышли, результат = "+res);
...
Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Всем привет, у меня есть БД в ней 2 связанные таблицы, в таблице есть дата создания события и мне нужно делать выборку по дате. Использую CursorLoader и SimpleCursorAdapter - без выборки все работает как надо, НО если задаю условие - ошибок нет, просто пустой экран, как будто условие не верное, хотя тут все четко. в чем может быть проблема?
Main - часть кода
Класс курсора
Метод в котором формируем запрос
И сам класс наследник AsyncTask
После это запускается метод подсчета сумы (один из столбцов в Таблице) всех событий с условием выборки по дате НО в ОДНОЙ таблице - все четко работает и считает. Короче, помогите, где я налошарил? Спасибо.
Main - часть кода
Код: Выделить всё
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle bndl) {
//Передаем в параметре Context context, DB db, int loaderIDPar
return new MyCursorLoader(this, db, id);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
scAdapterTableInfo.swapCursor(cursor);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
Код: Выделить всё
public class MyCursorLoader extends CursorLoader {
DB db;
int loaderID;
Cursor cursor;
MainActivity mainActivity = new MainActivity();
public MyCursorLoader(Context context, DB db, int loaderIDPar) {
super(context);
this.db = db;
this.loaderID = loaderIDPar;
}
@Override
public Cursor loadInBackground() {
//С помощью id понимаем какой лоадер запрашивается и возвращаем нужный курсор
if (loaderID == Constants.LOADER_ID_TABEL_INFO) {
String date = mainActivity.getMainDate();
try {
cursor = db.getJoinData(date);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
} else if (loaderID == Constants.LOADER_ID_TABEL_CATEGORY) {
cursor = db.getAllData(db.TABLE_CATEGORY_NAME);
}
return cursor;
}
}
Код: Выделить всё
// получить данные из связных таблиц
public Cursor getJoinData(String date) throws ExecutionException, InterruptedException {
//Формируем общую таблицу
String table = TABLE_INFO_NAME + " inner join " + TABLE_CATEGORY_NAME + " on "
+ TABLE_INFO_NAME + "." + INFO_TABLE_CATEGORY_ID + " = "
+ TABLE_CATEGORY_NAME + "." + CATEGORY_TABLE_ID;
//Формируем столбцы
//ОБЯЗАТЕЛЬНО НАДО СДЕЛАТЬ ОДНО ПОЛЕ С ПОМОЩЬЮ ALIASA "_id" - особенность SimpleCursorAdapter
String[] columns = {TABLE_INFO_NAME + "." + INFO_TABLE_ID,
TABLE_INFO_NAME + "." + INFO_TABLE_INFO,
TABLE_INFO_NAME + "." + INFO_TABLE_SUMM,
TABLE_INFO_NAME + "." + INFO_TABLE_CURRENCY,
TABLE_INFO_NAME + "." + INFO_TABLE_DATE,
TABLE_CATEGORY_NAME + "." + CATEGORY_TABLE_NAME};
myTask = new MyTask();
myTask.execute(date, table, columns);
return myTask.get();
Код: Выделить всё
private class MyTask extends AsyncTask<String[], Void, Cursor> {
String table;
String [] colums;
String date;
@Override
protected Cursor doInBackground(String[]... date) {
return mDB.query(table, colums, INFO_TABLE_DATE + "= ?", new String[]{this.date}, null, null, null);
}
@Override
protected void onPostExecute(Cursor cursor) {
super.onPostExecute(cursor);
}
public void execute(String date, String table, String[] colums) {
this.date = date;
this.table = table;
this.colums = colums;
}
}
Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Разобрался, не отрабатывал АсинТакс из-за кривой передачи данных и как следствие не отрабатывал метод onLoadFinished(Loader<Cursor> loader, Cursor cursor)
Re: Урок 88. AsyncTask. Итоговый результат. Метод get
Добрый день. Вчера сел попрактиковаться с AsynkTask и попробовал вынести класс с ним в другой файл, а не в Inner класс как в уроке. Помучился немного и понял, что не получается у меня никак обновлять UI в активити. Может кто-то подскажет реализацию или это не возможно в AsynkTask и нужно только копать в сторону Handler? Интересно все равно...