run getEvents on a background thread

This commit is contained in:
tibbi 2016-09-19 20:55:07 +02:00
parent 8d10c1b164
commit e154156628
8 changed files with 40 additions and 32 deletions

View File

@ -30,7 +30,7 @@ public class CalendarImpl implements DBHelper.DBOperationsListener {
mTargetDate = targetDate; mTargetDate = targetDate;
final int startTS = Formatter.getDayStartTS(Formatter.getDayCodeFromDateTime(mTargetDate.minusMonths(1))); final int startTS = Formatter.getDayStartTS(Formatter.getDayCodeFromDateTime(mTargetDate.minusMonths(1)));
final int endTS = Formatter.getDayEndTS(Formatter.getDayCodeFromDateTime(mTargetDate.plusMonths(1))); final int endTS = Formatter.getDayEndTS(Formatter.getDayCodeFromDateTime(mTargetDate.plusMonths(1)));
DBHelper.Companion.newInstance(mContext, this).getEvents(startTS, endTS); new DBHelper(mContext, this).getEvents(startTS, endTS);
} }
public void getPrevMonth() { public void getPrevMonth() {

View File

@ -226,7 +226,7 @@ public class EventActivity extends SimpleActivity implements DBHelper.DBOperatio
return; return;
} }
final DBHelper dbHelper = DBHelper.Companion.newInstance(getApplicationContext(), this); final DBHelper dbHelper = new DBHelper(getApplicationContext(), this);
final String description = mDescriptionET.getText().toString().trim(); final String description = mDescriptionET.getText().toString().trim();
mEvent.setStartTS(startTS); mEvent.setStartTS(startTS);
mEvent.setEndTS(mEndCheckbox.isChecked() ? endTS : startTS); mEvent.setEndTS(mEndCheckbox.isChecked() ? endTS : startTS);

View File

@ -226,10 +226,15 @@ public class WidgetConfigureActivity extends AppCompatActivity implements Calend
}; };
@Override @Override
public void updateCalendar(String month, List<Day> days) { public void updateCalendar(final String month, final List<Day> days) {
this.mDays = days; runOnUiThread(new Runnable() {
updateMonth(month); @Override
updateDays(); public void run() {
mDays = days;
updateMonth(month);
updateDays();
}
});
} }
private void updateMonth(String month) { private void updateMonth(String month) {

View File

@ -14,7 +14,7 @@ public class BootCompletedReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent arg1) { public void onReceive(Context context, Intent arg1) {
final List<Event> events = DBHelper.Companion.newInstance(context, null).getEventsAtReboot(); final List<Event> events = new DBHelper(context, null).getEventsAtReboot();
for (Event event : events) { for (Event event : events) {
Utils.scheduleNextEvent(context, event); Utils.scheduleNextEvent(context, event);
} }

View File

@ -26,7 +26,7 @@ public class NotificationReceiver extends BroadcastReceiver {
if (id == -1) if (id == -1)
return; return;
final Event event = DBHelper.Companion.newInstance(context, null).getEvent(id); final Event event = new DBHelper(context, null).getEvent(id);
if (event == null || event.getReminderMinutes() == -1) if (event == null || event.getReminderMinutes() == -1)
return; return;

View File

@ -13,7 +13,7 @@ import com.simplemobiletools.calendar.models.Event
import org.joda.time.DateTime import org.joda.time.DateTime
import java.util.* import java.util.*
class DBHelper(context: Context) : SQLiteOpenHelper(context, DBHelper.DB_NAME, null, DBHelper.DB_VERSION) { class DBHelper(context: Context, callback: DBOperationsListener?) : SQLiteOpenHelper(context, DBHelper.DB_NAME, null, DBHelper.DB_VERSION) {
private val MAIN_TABLE_NAME = "events" private val MAIN_TABLE_NAME = "events"
private val COL_ID = "id" private val COL_ID = "id"
private val COL_START_TS = "start_ts" private val COL_START_TS = "start_ts"
@ -29,21 +29,18 @@ class DBHelper(context: Context) : SQLiteOpenHelper(context, DBHelper.DB_NAME, n
private val COL_REPEAT_MONTH = "repeat_month" private val COL_REPEAT_MONTH = "repeat_month"
private val COL_REPEAT_DAY = "repeat_day" private val COL_REPEAT_DAY = "repeat_day"
private var mCallback: DBOperationsListener? = null
companion object { companion object {
private val DB_NAME = "events.db" private val DB_NAME = "events.db"
private val DB_VERSION = 3 private val DB_VERSION = 3
private var mCallback: DBOperationsListener? = null
lateinit private var mDb: SQLiteDatabase lateinit private var mDb: SQLiteDatabase
fun newInstance(context: Context, callback: DBOperationsListener): DBHelper {
mCallback = callback
return DBHelper(context)
}
} }
init { init {
mDb = writableDatabase mDb = writableDatabase
mCallback = callback
} }
override fun onCreate(db: SQLiteDatabase) { override fun onCreate(db: SQLiteDatabase) {
@ -149,19 +146,21 @@ class DBHelper(context: Context) : SQLiteOpenHelper(context, DBHelper.DB_NAME, n
} }
fun getEvents(fromTS: Int, toTS: Int) { fun getEvents(fromTS: Int, toTS: Int) {
val events = ArrayList<Event>() Thread({
var ts = fromTS val events = ArrayList<Event>()
while (ts <= toTS) { var ts = fromTS
events.addAll(getEventsFor(ts)) while (ts <= toTS) {
ts += Constants.DAY events.addAll(getEventsFor(ts))
} ts += Constants.DAY
}
val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL" val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL"
val selectionArgs = arrayOf(toTS.toString(), fromTS.toString()) val selectionArgs = arrayOf(toTS.toString(), fromTS.toString())
val cursor = getEventsCursor(selection, selectionArgs) val cursor = getEventsCursor(selection, selectionArgs)
events.addAll(fillEvents(cursor)) events.addAll(fillEvents(cursor))
mCallback?.gotEvents(events) mCallback?.gotEvents(events)
}).start()
} }
private fun getEventsFor(ts: Int): List<Event> { private fun getEventsFor(ts: Int): List<Event> {

View File

@ -118,7 +118,7 @@ class DayFragment : Fragment(), DBHelper.DBOperationsListener, AdapterView.OnIte
private fun checkEvents() { private fun checkEvents() {
val startTS = Formatter.getDayStartTS(mDayCode) val startTS = Formatter.getDayStartTS(mDayCode)
val endTS = Formatter.getDayEndTS(mDayCode) val endTS = Formatter.getDayEndTS(mDayCode)
DBHelper.newInstance(activity.applicationContext, this).getEvents(startTS, endTS) DBHelper(context, this).getEvents(startTS, endTS)
} }
private fun updateEvents(events: MutableList<Event>) { private fun updateEvents(events: MutableList<Event>) {
@ -172,7 +172,7 @@ class DayFragment : Fragment(), DBHelper.DBOperationsListener, AdapterView.OnIte
fun deleteEvents() { fun deleteEvents() {
val eventIDs = Array(mToBeDeleted.size, { i -> (mToBeDeleted[i].toString()) }) val eventIDs = Array(mToBeDeleted.size, { i -> (mToBeDeleted[i].toString()) })
DBHelper.newInstance(activity.applicationContext, this).deleteEvents(eventIDs) DBHelper(activity.applicationContext, this).deleteEvents(eventIDs)
} }
fun undoDeletion() { fun undoDeletion() {
@ -231,7 +231,9 @@ class DayFragment : Fragment(), DBHelper.DBOperationsListener, AdapterView.OnIte
} }
override fun gotEvents(events: MutableList<Event>) { override fun gotEvents(events: MutableList<Event>) {
updateEvents(events) activity?.runOnUiThread {
updateEvents(events)
}
} }
interface DeleteListener : NavigationListener { interface DeleteListener : NavigationListener {

View File

@ -70,8 +70,10 @@ class MonthFragment : Fragment(), Calendar {
} }
override fun updateCalendar(month: String, days: List<Day>) { override fun updateCalendar(month: String, days: List<Day>) {
mHolder.month_value.text = month activity?.runOnUiThread {
updateDays(days) mHolder.month_value.text = month
updateDays(days)
}
} }
fun setListener(listener: NavigationListener) { fun setListener(listener: NavigationListener) {