Java 重新启动应用程序时使用多个RecyclerVIew适配器

Java 重新启动应用程序时使用多个RecyclerVIew适配器,java,android,multithreading,android-recyclerview,Java,Android,Multithreading,Android Recyclerview,我在MainActivity上有一个线程,它将等待tcp响应。当线程得到响应时,它会将响应添加到recyclerview的适配器中。当我第一次构建它时没有问题,但当我按下home按钮并再次打开应用程序时,主活动中的所有内容似乎都重新启动。回收视图不显示任何内容。tcp线程获得响应并将响应添加到适配器后,recyclerview将不会显示任何内容。当我尝试获取数据并将其打印到日志中时,它会显示不同的值,这取决于线程内部和线程外部的位置 这是我的帖子: tcpHandler = new Handle

我在MainActivity上有一个线程,它将等待tcp响应。当线程得到响应时,它会将响应添加到recyclerview的适配器中。当我第一次构建它时没有问题,但当我按下home按钮并再次打开应用程序时,主活动中的所有内容似乎都重新启动。回收视图不显示任何内容。tcp线程获得响应并将响应添加到适配器后,recyclerview将不会显示任何内容。当我尝试获取数据并将其打印到日志中时,它会显示不同的值,这取决于线程内部和线程外部的位置

这是我的帖子:

tcpHandler = new Handler(getBaseContext().getMainLooper());
tcpThread = new Thread(new Runnable() {
    @Override
    public void run() {
        String response;
        ServerSocket welcomeSocket = null;
        try {
            welcomeSocket = new ServerSocket(8989);

            while(status)
            {
                Socket connectionSocket = welcomeSocket.accept();
                BufferedReader inFromClient =
                        new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

                response = inFromClient.readLine();
                Log.d("TCPCONNECTION", "receive "+ response);

                ArrayList<String> convert;
                try {
                    JSONArray jr = new JSONArray(response);
                    convert = new ArrayList<String>();
                    for (int i = 0; i<jr.length();i++) {
                        convert.add(jr.getString(i));
                    }
                    tcpHandler.post(new Runnable() {
                        @Override
                        public void run() {
                            setmAdapter();
                        }
                    });

                }catch(Exception e)
                {
                    e.printStackTrace();
                }
            }

            if(!status){
                welcomeSocket.close();
            }
            tcpHandler.post(this);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
});


tcpThread.start();
当我按下home按钮,然后重新启动应用程序

TCPCONNECTION: receive [ "index1", "index2", "index3" ]
ADAPTER: Get Adapter: test1
TEST: onClick: No Data Receive

我知道这不是一个干净的代码,我只是了解了thread和recyclerview,我想测试一下。

在mRecyclerView.setAdapter(mAdapter)之后尝试这个mAdapter.notifyDataSetChanged()@VinitSaxena在我的CustomRecycleServiceAdapter类中,我有一个处理它的方法
public void addItem(Data dataObj,int index){mDataset.add(dataObj);notifyItemInserted(index);}
你能尝试notifydatasetchanges方法而不是notifydatainserted吗?试试这个,让我知道结果。
TCPCONNECTION: receive [ "test1", "test2", "test3" ]
ADAPTER: Get Adapter: test1
TEST: onClick: test1
TCPCONNECTION: receive [ "index1", "index2", "index3" ]
ADAPTER: Get Adapter: test1
TEST: onClick: No Data Receive