7 Ocak 2017 Cumartesi

Otto - Android EventBus

Yazılım geliştirirken en dikkat edilmesi gereken konulardan biri loose coupling yani esnek bağlı tasarım . Fakat ne kadar bağımlılıktan kaçınsanızda çoğu yerde activityler fragmentlarla servislerle veya activityler diğer activiylerle haberleşmesi gerekebilir . Bu bahsettiklerim geleneksel olarak interfacelerle yapılabilir -Bir sınıfta instance , bir sınıfta ilgili methodlar kullanılarak haberleşebilirler-. Burda karşılaşılabilen en büyük handikap kullanılmayan methodlarında çoğu classda bulunarak gereksiz yer kaplaması veya sürekli bir üst sınıfa taşınması gereken instance lar. . İkinci yöntem ise eventbus kütüphanesi . Otto ise bu eventbus kütüphaneleri arasındaki en bilinenlerden biri . Temel olarak yapmanız gereken 5 aşama var .

1) Otto sınıfının heryerden ulaşılabilecek bir constructorı oluşturulur .
 2) Kullanılacak olan sınıfa register edilir .(kayıt edilir)
3) Mesaj tipi oluşturulur .
 4) Mesaj tipine subscribe olunur .
 5) Mesaj gönderilir - yakalanır. Şimdi sırayla açıklayalım .

1) Otto sınıfının heryerden ulaşılabilecek bir constructorı oluşturulur . Bunu yapmanın en kolay yolu bir tane application sınıfı açılır ve içinde static bir nesne oluşturulur .

public class ApplicationClass extends android.app.Application {
            public static Bus busProvider;

            @Override
            public void onCreate() {
                super.onCreate();
                busProvider = new Bus();
            }
        }

2) Kullanılacak olan sınıflar register edilir -kayıt edilir-.(hem mesajı gönderecek hem yakalayacak kısım ).

 public class MainActivity extends AppCompatActivity {
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                ApplicationClass.busProvider.register(this);
            }

3) Mesaj tipi oluşturulur . (Bir sınıftan diğerine bir String nesnesi taşınacak)

public class Message {
            public String count;

            public Message(String count) {
                this.count = count;
            }
        }

4) Mesaj tipine subscribe olunur . (Gelecek mesajın yakalandığı yer)

@Subscribe void callingMessage (Message message){
            message.count;
        }

5)Mesaj gönderilir. (Senkron olarak o an register olan sınıftaki method tetiklenir )

plus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ApplicationClass.busProvider.post(new Message("plus"));
            }

 İlgili örneği linkten bulabilirsiniz 

0 yorum:

Yorum Gönder