我之前在做TCP通讯时,tcp的具体实现代码我给单独写在一个类了,导致后面我Activity拿不到数据,后面我网上找了很久都没有资料,我现在解决了就写出来,希望能帮到遇到我同样问题的人,也是做写笔记,以便以后自己使用。
在非Activity中需要实现的代码如下:
Intent intent = new Intent(); intent.setAction("tcpServerReceiver"); intent.putExtra("tcpServerReceiver", rcvMsg2); VideoViewActivity.context.sendBroadcast(intent);//将消息发送给主界面
“rcvMsg2”是接收到的数据,但这数据已经被我特殊处理,"VideoViewActivity.context.sendBroadcast(intent);"这是以广播的形式给Activity发消息
在Activity中需要实现的代码如下:
private TextView txtRcv;private final MyHandler myHandler = new MyHandler(this); private MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver(); @SuppressLint("StaticFieldLeak") public static Context context;private class MyHandler extends Handler { private final WeakReference<FuncTcpServer> mActivity; MyHandler(FuncTcpServer activity) { mActivity = new WeakReference<FuncTcpServer>(activity); } @Override public void handleMessage(Message msg) { FuncTcpServer activity = mActivity.get(); if (activity != null) { switch (msg.what) { case 1: txtRcv.append(msg.obj.toString());//这是把接收到的消息显示到当前UI界面 KLog.e(msg.obj.toString()); break; } } } } private class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String mAction = intent.getAction(); switch (mAction) { case "tcpServerReceiver": String msg = intent.getStringExtra("tcpServerReceiver"); Message message = Message.obtain(); message.what = 1; message.obj = msg; myHandler.sendMessage(message); break; } } }接着还要在onCreate()中注册广播接收器和初始化context = this;IntentFilter intentFilter = new IntentFilter("tcpServerReceiver"); registerReceiver(myBroadcastReceiver, intentFilter);这样就大功告成了,博客写的不多,写的不好请见谅,有什么不懂的可以找我。