zoukankan      html  css  js  c++  java
  • LocalBroadcastManager 使用

    如果只是在应用程序进程内发送和接收广播,可以考虑使用LocalBroadcastManager而不是更通用的Context.sendBroadCaset()方法。

    使用LocalBroadcastManager更高效,因为不需要跨进程管理草错,也不要考虑广播涉及的安全问题。

    demo:

    接收activity

     1 public class MainActivity extends AppCompatActivity {
     2 
     3     public static final String FILETER = "MainActivity-BRODER";
     4     @butterknife.InjectView(R.id.button)
     5     Button button;
     6     private BroadcastReceiver broadcastReceiver;
     7     private LocalBroadcastManager localBroadcastManager;
     8 
     9     @Override
    10     protected void onCreate(Bundle savedInstanceState) {
    11         super.onCreate(savedInstanceState);
    12         setContentView(R.layout.activity_main);
    13         butterknife.ButterKnife.inject(this);
    14         button.setOnClickListener(new View.OnClickListener() {
    15             @Override
    16             public void onClick(View view) {
    17                 startActivity(new Intent(MainActivity.this,SendActivity.class));
    18             }
    19         });
    20     }
    21 
    22     @Override
    23     protected void onResume() {
    24         super.onResume();
    25         localBroadcastManager = LocalBroadcastManager.getInstance(this);
    26         IntentFilter intentFilter = new IntentFilter();
    27         intentFilter.addAction(FILETER);
    28         broadcastReceiver = new BroadcastReceiver() {
    29 
    30             @Override
    31             public void onReceive(Context context, Intent intent) {
    32                 String name = intent.getStringExtra("name");
    33                 Log.e("MainActivity", "MainActivity ========  " + name);
    34             }
    35         };
    36         localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter);
    37     }
    38 
    39     @Override
    40     protected void onDestroy() {
    41         super.onDestroy();
    42         localBroadcastManager.unregisterReceiver(broadcastReceiver);
    43     }
    44 }

    发送 activity

     1 public class SendActivity extends AppCompatActivity {
     2 
     3     @InjectView(R.id.button2)
     4     Button button2;
     5 
     6     @Override
     7     protected void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         setContentView(R.layout.activity_send);
    10         ButterKnife.inject(this);
    11         
    12         button2.setOnClickListener(new View.OnClickListener() {
    13             @Override
    14             public void onClick(View view) {
    15                 LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(SendActivity.this);
    16                 Intent intent = new Intent();
    17                 intent.setAction(MainActivity.FILETER);
    18                 intent.putExtra("name", "我是sendActivity 发送");
    19                 localBroadcastManager.sendBroadcast(intent);
    20             }
    21         });
    22     }
    23 }
  • 相关阅读:
    [扩展推荐] Laravel 中利用 GeoIP 获取用户地理位置信息
    10 个优质的 Laravel 扩展推荐
    5 个非常有用的 Laravel Blade 指令,你用过哪些?
    PHP 7.3 我们将迎来灵活的 heredoc 和 nowdoc 句法结构
    使用 Swoole 来加速你的 Laravel 应用
    一个成功的 Git 分支模型(适用于商业应用开发)
    github搜索语法
    python协程爬虫-aiohttp+aiomultiprocess使用
    python-协程、多线程、多进程性能比较
    functools模块-为函数预设args/kwargs参数
  • 原文地址:https://www.cnblogs.com/lihaolihao/p/4702541.html
Copyright © 2011-2022 走看看