Merhabalar, bu yazıda Dinamik Broadcast Receiver İle Sayac Yapımı hakkında bir örnek yer almaktadır.
Öncelikle Broadcast Receiver çeşitleri var mıdır? Broadcast Receiver çeşitleri nelerdir ? Sorularına cevap vermek istiyorum. Broadcast Receiver, Statik ve Dinamik olarak ikiye ayrılmaktadır. Statik Broadcast Receiverlar manifest dosyasında belirtilmek zorundadır. Ancak dinamik Broadcast Receiverlar manifest dosyasında belirtilmek zorunda değildir. Sadece kod ile bir receiver tanımlayabiliriz ve kullanabiliriz. Android android broadcast receiver kullanımı çok zor olmamakla birlikte bir kaç kullanım şekli vardır.
Dinamik Broadcast Receiver Kullanılması Gereken Yerler
Dinamik ve Statik Broadcast Receiver konusunda örnekler bir çok sitede yer almaktadır. Peki dinamik Broadcast Receiver ne zaman kullanılır? Hangi durumlarda kullanılır?
- İlk olarak geçici ihtiyaçlardan dolayı kullanabiliriz. Bilindiği gibi receiver sürekli çalışan bir yapıdır ve ihtiyacı olan veriyi duyduğu anda çalışmaya başlar. Dinamik broadcast receiver ise programımız çalıştığı zaman aralığında çalışır ve aksi durumda çalışmaz.
- Bazı durumlarda ise dinamik olarak kullanmamız zorunludur. Mesela sistem saati değiştiğinde kendini sürekli tekrarlayan ACTION_TIME_TICK için kullanmalıyız. Ayrıca Sticky Broadcast içinde dinamik broadcast tanımlaması yapılır.(Kullanılır)
Dinamik Broadcast Receiver Sayaç Yapımı
Kod ile ilgili gerekli açıklama kod içerisinde yorum satırlarında yer almaktadır.
public class MainActivity extends AppCompatActivity { private static final String LOG=MainActivity.class.getSimpleName(); public TextView textView; public int sayac=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); IntentFilter intentFilter=new IntentFilter(); // Intent ACTION_TIME_TICK her 1 dakikada bir uygulamaya haber verir. Yani uyarı almamızı sağlar. intentFilter.addAction(Intent.ACTION_TIME_TICK); // Action'ımızı register ediyoruz. registerReceiver(MyReceiver,intentFilter); } @Override protected void onPause() { super.onPause(); unregisterReceiver(MyReceiver); } // Broadcast Oluşturduk private BroadcastReceiver MyReceiver=new BroadcastReceiver() { private final String LOG=MainActivity.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { // Receiver çalıştırğı zaman ekrana bir toast mesaj gelecektir. Log.i(LOG,"MyReceiver burası"); Toast.makeText(context,LOG,Toast.LENGTH_LONG).show(); // Sayac değerimiz başta sıfır olduğu için öncelikle arttırıyoruz. // Daha sonra ise her 1 dakikada bir receiver çalışacağı için otomatik olarak değeri arttıracaktır. sayac++; // textView tanımlaması ve sayac değerimizin textView içerisine yazdırılma işlemleri yapılmıştır. textView=findViewById(R.id.textview); textView.setText("Sayacımız : "+sayac); } }; }