Мне нужно создать объект для SQLiteOpenHelper из потока AsyncTask. Если я использую this
как параметр Context
, я получаю ошибку - it cannot be applied
.Не удается создать объект для SQLiteOpenHelper из потока AsyncTask?
Вот мои классы:
MySQLiteHelper.java
public class MySQLiteHelper extends SQLiteOpenHelper {
public MySQLiteHelper(Context context) {
// the constructor takes Context as argument
}
}
Parsing.java
public class Parsing extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
MySQLiteHelper obj = new MySQLiteHelper(this);
//cannot create this object.
// which `Context` should I pass as an argument
}
// some code
}
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Parsing obj = new Parsing(context);
obj.execute();
}
}
Ответ на мой вопрос: метод, предложенный ZygoteInit как в маркированной ответ, выработанная. ρяσѕρєя K, в третьем комментарии ниже этот ответ объяснил то же самое в коде.
EDIT:
Это EDIT не сильно связан с вопросом. ZygoteInit помогает мне с общим подходом к моей проблеме.
Это то, что я делаю. Я новичок в Android. Не уверен, что это может быть проще.
Я хочу, чтобы часть кода выполнялась каждые несколько часов. Итак, я использовал класс AlarmManager. Я рассматривал все связанные с этим вещи. Класс AlarmReceiver
вызывается каждые 4 часа. Я хочу поместить свой код в этот класс. Но поскольку код включает Networking, то есть загружает некоторые данные, я узнал, что рекомендуется использовать AsyncTask. Итак, я создал еще один класс Parsing
, который расширяет AsyncTask
. Теперь мне нужно сохранить данные, полученные во время этой операции в сети, которая выполняется в классе Parsing
. Итак, я создал класс MySQLiteHelper
.
Могу ли я сделать его более простым человеком? Моя цель: выполнить фоновое сетевое взаимодействие каждые несколько часов, в которое входит база данных.
Первоначально я использовал service
. Но я хочу, чтобы мой код выполнялся каждые четыре часа, даже если приложение закрыто. Итак, я прочитал here, чтобы использовать диспетчер аварийных сигналов.
Что такое экземпляр контекста в моем случае, пожалуйста? – Nikhil
@ZygoteInit: я думаю, что 'Parsing' является отдельным классом, поэтому' MyActivity.this' не будет работать. OP нужно передать контекст из Activity в 'Parsing', затем из' Parsing' в 'MySQLiteHelper' –
@nikhil: добавить' private Context mContext ; публичный анализ (контекст mContext) {this.mContext = mContext} 'в классе« Parsing »и создание объекта« Parsing »из Activity, передавая« MyActivity.this »как« Парсинг objParsing = новый парсинг (MyActivity.this); objParsing.execute(); ' –