как сделать так, чтобы поток обновлялся каждый раз при изменении его переменной

#java #android #multithreading #android-studio #mobile

Вопрос:

Привет я делаю приложение в Android Studio , который использует поток thread1 для создания протокола TCP/IP в гнездо s и вывести процент заряда батареи мобильного телефона message , которая thread1 создается при нажатии кнопки подключиться кнопка, поэтому, когда когда-либо я нажимаю подключить кнопку резьбы становится создан, но процент батареи не обновляются я.е , если процент составляет 50%, когда я нажимаю подключить свой привлекательный процент, до 50% и, показывая его, но когда он будет 51% ее еще отображается как 50% есть ли способ, чтобы получить thread1 upadte с каждой батареи в процентах приращения , ниже приведен код моего приложения

 public class controler extends AppCompatActivity {
    //variables
    static EditText et, et2;
    Button bt, bt2;
    boolean flag = false;
    static TextView tv, tv2;
    static ProgressBar pb;
    static String ipstr;
    static int portstr;
    private PrintWriter output;
    private BufferedReader input;
    Thread Thread1 = null;

    // messagesendervar
    String message = MainActivity.Intimate;



    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        //assigning fields
        setContentView(R.layout.activity_controler);
        et = findViewById(R.id.et);
        et2 = findViewById(R.id.et2);
        bt = findViewById(R.id.button);
        bt2 = findViewById(R.id.button2);
        tv = findViewById(R.id.tv);
        tv2 = findViewById(R.id.tv2);
        Thread1 = new Thread(new Thread1());

        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    ipstr = et.getText().toString();
                    portstr = Integer.parseInt(et2.getText().toString());



                    //mmessagesender.execute();
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
        });
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //mmessagesender.execute();
               // Thread1 = new Thread(new Thread1());
                if(!flag){
                    Thread1.start();
                    flag = true;
                }

            }
        });


    }

    //thread1 calling

    class Thread1 implements Runnable {
        public void run() {
            Socket s;

            //condition to write on tv
            if (controler.ipstr != null) {
                controler.tv.setText(controler.ipstr);
            } else if (controler.ipstr == null) {
                controler.tv.setText("assign an ip");
            }
            //assigning port
            if (controler.portstr != 0) {
                controler.tv.setText("ip is"   " "   controler.ipstr   " "   "port is"   controler.portstr);
            } else if (controler.portstr == 0) {
                controler.tv.setText("give a port number");
            }
            //Batteryupdating
            if (message != null) {
                controler.tv2.setText(message);
            } else if (message == null) {
                controler.tv2.setText("not fully charged");
            }

            //conditon end


                try {
                    s = new Socket(controler.ipstr, controler.portstr);
                    output = new PrintWriter(s.getOutputStream());
                    runOnUiThread(new Runnable() {
                        public void run() {
                            while (message != null) {
                                output.write(message);
                                output.flush();

                            }

                        }
                    });

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


        }

    }
 

Заранее спасибо