Tuesday, March 15, 2016

Implementasi Event Bus menggunakan Otto

Pada blog sebelum-nya saya telah menjelaskan apa keuntungan menggunakan Event Bus. Pada blog kali ini saya akan mencoba menjelaskan impelentasinya menggunakan library Otto.

1. Pertama
compile 'com.squareup:otto:1.3.8'

2. Kedua create instance Bus di Application class
import android.app.Application;
import android.util.Log;
import com.squareup.otto.Bus;
import com.squareup.otto.ThreadEnforcer;

/**
 * Created by nostra on 3/15/16.
 */
public class OurApp extends Application{
    private static Bus mEventBus;
    public static Bus getEventBus() {
        return mEventBus;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mEventBus = new Bus(ThreadEnforcer.ANY);
     

    }
}

3. Create pojo class untuk mendefinisikan Event. Pada kasus ini saya membuat event ketika user yg login sudah invalid.
/**
 * Created by nostra on 3/15/16.
 */
public class UnauthorizedEvent {
    public int status;

    public UnauthorizedEvent(int status) {
        this.status = status;
    }
}

4. Publisher melakukan post event, berikut potongan logic-nya:
if(status==401){
    OurApp.getEventBus().post(new UnauthorizedEvent(status));
    return;
}

5. Pada Activity Anda tambahkan register bus, seperti gambar dibawah:
    @Override
    protected void onStart() {
        super.onStart();
        OurApp.getEventBus().register(this);
    }

    @Override
    protected void onStop() {
        super.onStop();
        OurApp.getEventBus().unregister(this);
    }

6. Langkah terakhir Activity melakukan subscribe, berikut contohnya:
    @Subscribe
    public void unauthorizedEvent(UnauthorizedEvent event){
        if(event.status==401){
            Intent i = new Intent(this, Login.class);
            startActivity(i);
            finish();
        }
        Log.i(TAG, "Event status :" + event.status);

    }

Yay, Mudah bukan. Untuk next level penggunaan Event bus kalian bisa baca artikel dibawah:
https://labs.ribot.co.uk/android-application-architecture-8b6e34acda65#.mimpcgc5v

Sekian dan terima kasih

No comments:

Post a Comment