Android实现非Activity与Activity数据传输

我之前在做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);

这样就大功告成了,博客写的不多,写的不好请见谅,有什么不懂的可以找我。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

panyingdao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值