为了账号安全,请及时绑定邮箱和手机立即绑定

如何重复发布和接收数据但使应用程序仍可响应已编辑

如何重复发布和接收数据但使应用程序仍可响应已编辑

PHP
慕侠2389804 2022-01-02 19:56:26
我需要重复将数据发布到 php 并取回它们,但使应用程序仍然可以响应。我的代码有效,但一段时间(大约 1 分钟)后,我的应用程序停止响应。起初,我尝试将 POST() 函数添加到 onResponse() 函数(onRespose 调用 POST 函数,它一次又一次地发出新请求)但是这冻结了我的应用程序,因此我添加了每 1 毫秒调用一次函数的计时器...编辑后,我的应用程序与以前一样工作(仅在连接到 PC 时才有效),如果我打开应用程序并且我的手机没有连接到 PC,应用程序在 1 分钟后下降,所以我仍然遇到与开始时相同的问题。如果有人发现错误,请告诉我在哪里。...我编辑的代码:.主活动.javapublic class MainActivity extends AppCompatActivity implements Sync.CallBack {    final String URL = "***";    final String KEY = "***";    Data data;    RequestQueue requestQueue;    TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        data = new Data();        data.key = KEY;        data.pressed = "0";        textView = findViewById(R.id.status);        requestQueue = Volley.newRequestQueue(this);        StartSync();    }    public void btnClick(View view) {        data.pressed = "1";    }    @Override    public void onCallBack(String data) {        textView.setText(data);    }    public void StartSync(){        Sync thread = new Sync(this,data,this);        thread.start();    }}
查看完整描述

1 回答

?
慕码人8056858

TA贡献1803条经验 获得超6个赞

好吧,我可以给你一个如何实现的例子,但你真的需要研究我将使用的东西。


创建一个线程来发送和接收数据


 public class myReceiveThread extends Thread{

        public gotNewData listener;


        //Create an interface to pass data to Activity

        public interface gotNewData(){

            void gotNewDataToDisplay(String data); //or int or data or what ever.

        }


        //CTor

        public myThread(gotNewData listener){

            this.listener = listener;

        }


        @Override

        public void run(){

            while(myAppisRunnung == true){




                //Receive Data

                listener.gotNewDataToDisplay("New Data");

            }

        }

        }

在主要活动中:


//In Main activity

public class MainActivity extends AppCompactActiity implements gotNewData{


//what ever


public void startThread(){

     myReceiveThread thread = new myReceiveThread(this);

     thread.start();

}


@Override

public void gotNewDataToDisplay(String data){

    someTextView.setText(data);

  }

}

创建发送线程


public class mySendingThread extends Thread{

private BlockingQueue<String> toSendMessages= new BlockingQueue<>();


Public mySendingThread (BlockingQueue<String> toSendMessages){

this.toSendMessages = toSendMessages;

}


@Override

        public void run(){

            while(myAppisRunnung == true){

             String message= toSendMessages.take();

//Send message

}

}

}

在主活动中


public void startSendThread(){

     mySendingThread threadSend = new mySendingThread(MessageQueue);

     thread.start();

}

在 mainActivity 中,您需要一个BlockingQueue<String> MessageQueue 并且可以添加您想要的每条消息。


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信