package com.erakk.lnreader.task; import android.os.AsyncTask; import android.util.Log; import com.erakk.lnreader.LNReaderApplication; import com.erakk.lnreader.UIHelper; import com.erakk.lnreader.callback.CallbackEventData; import com.erakk.lnreader.callback.ICallbackEventData; import com.erakk.lnreader.callback.IExtendedCallbackNotifier; import com.erakk.lnreader.dao.NovelsDao; import com.erakk.lnreader.model.BookmarkModel; import com.erakk.lnreader.model.PageModel; import java.util.ArrayList; public class LoadBookmarkTask extends AsyncTask<Void, ICallbackEventData, AsyncTaskResult<BookmarkModel[]>>{ private static final String TAG = LoadBookmarkTask.class.toString(); public volatile IExtendedCallbackNotifier<AsyncTaskResult<?>> owner; public LoadBookmarkTask(IExtendedCallbackNotifier owner) { this.owner = owner; } @Override protected AsyncTaskResult<BookmarkModel[]> doInBackground(Void... params) { ArrayList<BookmarkModel> temp = NovelsDao.getInstance().getAllBookmarks(UIHelper.getAllBookmarkOrder(LNReaderApplication.getInstance())); BookmarkModel[] result = temp.toArray(new BookmarkModel[temp.size()]); // preload pagemodel for(BookmarkModel bm : result) { try { PageModel p = bm.getPageModel(); p.getParentPageModel(); }catch (Exception ex) { Log.e(TAG, "Failed to get page model: " + bm.getPage()); } } return new AsyncTaskResult<BookmarkModel[]>(result, BookmarkModel[].class); } @Override protected void onPostExecute(AsyncTaskResult<BookmarkModel[]> result) { CallbackEventData message = new CallbackEventData("Completed", "LoadBookmarkTask"); owner.onCompleteCallback(message, result); } }