现在 Activity 可以使用以下三种方式之一连接到服务:
- 广播接收器 http://developer.android.com/reference/android/content/BroadcastReceiver.html
-
信使 http://developer.android.com/reference/android/os/Messenger.html
- AIDL
我认为 BroadcastReceiver 是最简单的通信方式,但我想知道为什么以及何时使用其他方式?或者换句话说,在哪些情况下,Messenger 或 AIDL 将是比广播接收器更好的实践?
我主要倾向于使用LocalBroadcasts
。它们本质上就像真正的广播,但仅对您的应用程序可见。首先你必须创建一个BroadcastReceiver
就像正常广播一样:
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(Intent.SOME_ACTION.equals(action)) {
// Do your work
}
}
};
然后您可以注册和取消注册BroadcastReceiver
像这样:
@Override
public void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter(Intent.SOME_ACTION);
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
manager.registerReceiver(broadcastReceiver, intentFilter);
}
@Override
public void onPause() {
super.onPause();
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
manager.unregisterReceiver(broadcastReceiver);
}
最后你可以从你的电脑发送广播Service
或应用程序中的其他任何地方,如下所示:
Intent intent = new Intent(Intent.SOME_ACTION);
LocalBroadcastManager manager = LocalBroadcastManager.getInstance(getActivity());
manager.sendBroadcast(intent);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)