繁体   English   中英

将数据从应用程序传递到活动

[英]Pass data from Application to the Activity

我的android应用程序类实例正在监听事件的第三方服务。 然后活动开始了,我需要注意我的活动。 什么是正确的方法? 我知道startActivity()方法,但是我的Activity正在运行!

如果通信是您的应用程序本地的,则可以使用本地广播

对于组件之间的通信,您还可以使用EventBus (Android-library)。 它非常易于使用和实施(不到一分钟即可了解其工作原理),并且性能出色。

通过LocalBroadcastManager使用本地广播事件-有关更多信息,请参阅本教程

为了方便起见,我已复制了上面教程中的相关代码。

要通知您已经在运行的活动有关事件的信息,请尝试以下操作:

  1. 收到事件时,从您的Application类发送广播意图。

     Intent intent = new Intent("my-event"); // add data intent.putExtra("message", "data"); LocalBroadcastManager.getInstance(this).sendBroadcast(intent); 
  2. 在您的活动中注册一个BroadcastReceiver,它将处理您事件的接收到的Intent。 将以下代码添加到您的活动中:

     @Override public void onResume() { super.onResume(); // Register mMessageReceiver to receive messages. LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("my-event")); } // handler for received Intents for the "my-event" event private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // Extract data included in the Intent String message = intent.getStringExtra("message"); Log.d("receiver", "Got message: " + message); } }; @Override protected void onPause() { // Unregister since the activity is not visible LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver); super.onPause(); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM