I noticed that in your Presenter you insert data into ContentProvider.

You totally right. 
Because of this reason all interactions from VIEW to Present sent as a message on the HandlerThread that live in Presenter.
I omit this code to reduce the questions why and what.

But here it is:

public void attachView(T t) {
thread = new HandlerThread(getClass().getName(), android.os.Process.THREAD_PRIORITY_BACKGROUND);
looper = thread.getLooper();
mView = t;

public void detachView() {
mView = null;
if (handler != null) {
handler = null;
if (thread != null) thread.quit();
public void submitOrder(Order order) {
Message msg = getHandler().obtainMessage();
msg.obj = order;
class NewOrderHandler extends Handler {

@Override public void handleMessage(Message msg) {
Order order = (Order) msg.obj;
int localId = insertOrder(order);
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.