#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();
}
}
}
Заранее спасибо