Web Socket在多个片段和活动中发送和接收数据

时间:2016-12-29 07:34:44

标签: android sockets websocket

我第一次使用websocket,它是Uber的一种应用程序。我从套接字接收数据,套接字连接和接收器是公共类,但我很困惑如何以优化的方式传递特定活动或片段的数据。据我所知,我想在所需的课程中使用广播接收器,但它不是一个好方法...所以任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

找到了一个很好的解决方案我不认为它是最终的,但它比Brad cast接收器更快。

  1. 我在主要活动中创建了一个接口,其中包含一个发送接收数据的方法。

    public class MainActivity extends AppCompatActivity{
    
        SendData sendData;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public interface SendData {
            public void sendData(String data);
        }
    
    }
    
  2. 在Fragment Class中,我需要来自Main Activity的响应,我实现了上面的Main Activity接口。

    public class Storage extends Fragment implements MainActivity.SendData{
    
        View view;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
            view = inflater.inflate(R.layout.driver_info_fragment,container,false);
            return view;
        }
    
        @Override
        public void SendData(String data) {
           String dataReceived = data;
        }
    
    }
    
  3. 当我在Main Activity中收到数据时,我将获得当前片段,如果我想将数据发送到该片段,那么我应该在该片段中实现主要活动接口并在Main Class中创建一个cast当我有数据并通过值

    通知片段
    public class MainActivity extends AppCompatActivity{
    
        @Override
        public void notifySocketMessage(final String message) {
            if(message != null){
                dataPasser = // define the fragment class name where you need to send the data.
                dataPasser.onDataPass(message); // add the message to the notifier
            }
        }
    
    }