个人日记~多个Activity与同一线程通讯
Socket在使用时只能有一个连接存在,多个Activity都需要使用同一个连接,要处理一下消息的传递。
示例步骤 复制不能运行
一.使用LocalBroadcastManager 本地广播
- mainActivity中启动Socket 注册本地广播
public static Socket socket;
//图省事 直接全局socket
private BufferedReader in;
private OutputStreamWriter out;
private IntentFilter mIntentFilter;
private LocalReceiver mLocalReceiver;
private LocalBroadcastManager mLocalBroadcastManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SocketINIT();
soketRec();
//监听readLine()
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
//注册本地广播监听器
mIntentFilter = new IntentFilter();
mIntentFilter.addAction("mSocketTest");
mLocalReceiver = new LocalReceiver();
mLocalBroadcastManager.registerReceiver(mLocalReceiver, mIntentFilter);
2.处理广播数据,重写BroadcastReceiver
static class LocalReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getExtras().getString("SocketData");
//数据处理
Toast.makeText(context, action, Toast.LENGTH_SHORT).show();
}<