Dynamic Registration vs Static Registration of BroadcastReceiver

后端 未结 5 777
余生分开走
余生分开走 2021-01-01 14:18

All of us known we register BroadcastReceiver in two types

1)Static Registration

2)Dynamic Registration

B

5条回答
  •  时光取名叫无心
    2021-01-01 15:05

    I am going to show you difference static and dynamic broadcast receivers via coding:

    a) Define UI for both kind of receviers:

         
    
    
        
    
            

    b) DynamicBroadcastReceiver.java

     public class DynamicBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Dynamic Broadcast", Toast.LENGTH_SHORT).show();
    }
    

    }

    c) StaticBroadcastReceiver.java

    public class StaticBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Static Broadcast", Toast.LENGTH_SHORT).show();
    }
    

    }

    d) MainActivity.java

     public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //////////////////=================Starts Dynamic Broadcast Receiver
    DynamicBroadcastReceiver dynamicBroadcastReceiver = new DynamicBroadcastReceiver();
    
    public void registerBroadcastReceiverDynamically(View view) {
        IntentFilter filter = new IntentFilter();
        filter.addAction("MY_BROADCAST");
        registerReceiver(dynamicBroadcastReceiver, filter);
    }
    
    public void sendUsingDynamicallyRegisteredBroadcastReceiver(View view) {
        Intent i = new Intent();
        i.setAction("MY_BROADCAST");
        sendBroadcast(i);
    }
    
    @Override
    protected void onDestroy() {
        if (dynamicBroadcastReceiver != null) {
            unregisterReceiver(dynamicBroadcastReceiver);
        }
        super.onDestroy();
    }
    
    //////////////////=================Ends Dynamic Broadcast Receiver
    
    
    //////////////////=================Starts Static Broadcast Receiver
    public void sendUsingStaticallyRegisteredBroadcastReceiver(View view) {
        Intent i = new Intent();
        i.setAction("MY_BROADCAST_STATIC");
        sendBroadcast(i);
    }
    

    }

    e) Manifest File:

    
    
    
        
            
                
                    
    
                    
                
            
    
            
    
            
            
                
                    
    
                
            
        
    
    
    

提交回复
热议问题