将 AsyncTask 转换为 RxJava
Converting AsyncTask to RxJava
我有一个获取 OneSignal 通知的项目,它工作正常,但我想删除 AsyncTask 并改用 RxJava。我遵循了一些示例,但到目前为止没有任何结果。
这是 AsyncTask 实现
NotificationDao mDAO;
List<Messages> mList = new ArrayList<>();
NotificationDatabase mDataBase;
mDataBase = NotificationDatabase.getInstance(this);
mDAO = mDataBase.notificationDao();
new AsyncTask<Void, Void, List<Messages>>() {
@Override
protected List<Messages> doInBackground(Void... voids) {
return mDAO.getNotificationList();
}
@Override
protected void onPostExecute(List<Messages> messages) {
mList.clear();
mList.addAll(messages);
mAdapter.setData(messages);
mAdapter.notifyDataSetChanged();
}
}.execute();
我在这里得到 nullppinter 异常
mList.addAll(messages);
我将不胜感激关于如何正确执行此操作的一些见解
这与您的其他问题的情况相同。请确保你研究了更多关于 Rx 实现的知识,因为这将帮助你解决这些问题。
Single.fromCallable(new Callable<List<Messages>>() {
@Override
public List<Messages> call() throws Exception {
return mDAO.getAllNotification();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(new Consumer<List<Messages>>() {
@Override
public void accept(List<Messages> messages) throws Exception {
mList.clear();
mList.addAll(messages);
mAdapter.setData(messages);
mAdapter.notifyDataSetChanged();
}
})
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
})
.subscribe();
我有一个获取 OneSignal 通知的项目,它工作正常,但我想删除 AsyncTask 并改用 RxJava。我遵循了一些示例,但到目前为止没有任何结果。
这是 AsyncTask 实现
NotificationDao mDAO;
List<Messages> mList = new ArrayList<>();
NotificationDatabase mDataBase;
mDataBase = NotificationDatabase.getInstance(this);
mDAO = mDataBase.notificationDao();
new AsyncTask<Void, Void, List<Messages>>() {
@Override
protected List<Messages> doInBackground(Void... voids) {
return mDAO.getNotificationList();
}
@Override
protected void onPostExecute(List<Messages> messages) {
mList.clear();
mList.addAll(messages);
mAdapter.setData(messages);
mAdapter.notifyDataSetChanged();
}
}.execute();
我在这里得到 nullppinter 异常
mList.addAll(messages);
我将不胜感激关于如何正确执行此操作的一些见解
这与您的其他问题的情况相同。请确保你研究了更多关于 Rx 实现的知识,因为这将帮助你解决这些问题。
Single.fromCallable(new Callable<List<Messages>>() {
@Override
public List<Messages> call() throws Exception {
return mDAO.getAllNotification();
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(new Consumer<List<Messages>>() {
@Override
public void accept(List<Messages> messages) throws Exception {
mList.clear();
mList.addAll(messages);
mAdapter.setData(messages);
mAdapter.notifyDataSetChanged();
}
})
.doOnError(new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
})
.subscribe();