package com.zhuinden.simplestackdemoexamplefragments.application; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import com.zhuinden.simplestackdemoexamplefragments.data.manager.DatabaseManager; import com.zhuinden.simplestackdemoexamplefragments.util.SchedulerHolder; import javax.inject.Inject; import javax.inject.Named; import io.reactivex.android.schedulers.AndroidSchedulers; /** * Created by Owner on 2017. 01. 26.. */ public class MainScopeListener extends Fragment { HandlerThread handlerThread; @Inject @Named("LOOPER_SCHEDULER") SchedulerHolder looperScheduler; @Inject DatabaseManager databaseManager; public MainScopeListener() { setRetainInstance(true); CustomApplication.get().getComponent().inject(this); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); handlerThread = new HandlerThread("LOOPER_SCHEDULER"); handlerThread.start(); synchronized(handlerThread) { looperScheduler.setScheduler(AndroidSchedulers.from(handlerThread.getLooper())); } databaseManager.openDatabase(); } @Override public void onDestroy() { databaseManager.closeDatabase(); new Handler().postDelayed(() -> { handlerThread.quit(); }, 300); super.onDestroy(); } }