Daha önceki yazılarda ; Dinamik Broadcast Receiver Kullanılması Gereken Yerler ile ilgili açıklamaya yer vermiştim. Linki kod üzerinde bulabilirsiniz.
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)
olarak bahsetmiştim. Bu yazıda ise örnek bir kod bulabilirsiniz. Detaylı açıklama kod üzerinde yapılmıştır.
Daha detaylı örneği incelemek isterseniz : Broadcast Receiver nedir? ve Sayaç Yapımı
Dinamik Broadcast Receiver Oluşturma Örnek Kod
public class MainActivity extends AppCompatActivity { private static final String LOG=MainActivity.class.getSimpleName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); // Dinamik Broadcast oluşturmak için IntentFilter kullanıyoruz. IntentFilter intentFilter=new IntentFilter(); // IntentFilter'ımıza ACTION_AIRPLANE_MODE_CHANGED yani telefon uçak moduna geçtiğinde veya tam tersi işlem olduğunda çalışması için Action ekliyoruz. intentFilter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); // Eklediğimiz Action'ı registerReceiver() ile Register etmeliyiz. registerReceiver(MyReceiver,intentFilter); } @Override protected void onPause() { super.onPause(); // Program durduğunda receiver'ımız da duruyor. unregisterReceiver(MyReceiver); } // Broadcast Oluşturduk private BroadcastReceiver MyReceiver=new BroadcastReceiver() { private final String LOG = MyReceiver.class.getSimpleName(); @Override public void onReceive(Context context, Intent intent) { Log.i(LOG,"MyReceiver burası"); Toast.makeText(context,LOG,Toast.LENGTH_LONG).show(); } }; }