Я работаю с развитием Android. У меня есть поток, который я хотел бы возобновить или остановить в зависимости от нажатия кнопки, но я не знаю, почему мой поток не возобновит ... Вот кодКак мне возобновить и приостановить эту тему?
public class MainActivity extends Activity {
private Thread clientThread;
Boolean running = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
clientThread = new Thread(new Client());
clientThread.start();
}
@SuppressLint("NewApi")
class Client implements Runnable {
@Override
public void run()
{
try {
while (running == true) {
//get sensor data here
if (fsensor3 > 200)
{
running = false; //To stop thread from repeating
new MyVoltageAlert().execute(fsensor3);
//What do I do here?
}
runOnUiThread(new Runnable()
{
@Override
public void run() {
//UI stuff here
}
});
}
}
catch(Exception e){
e.printStackTrace();
}
}
}//End Client Thread
class MyVoltageAlert extends AsyncTask<Integer, Void, Integer>{
@Override
protected Integer doInBackground(Integer... params){
return params[0];
}
@Override
protected void onPostExecute(Integer result) {
super.onPostExecute(result);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setMessage(result + "mv")
.setTitle("Sensor Warning!");
// Add the buttons
builder.setPositiveButton("Continue", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//What do I do here?
// running = true;
}
});
builder.setNegativeButton("Stop", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//What do I do here?
// running = false;
}
});
// Create the AlertDialog
AlertDialog dialog = builder.create();
dialog.show();
}
}
}
Моя проблема заключается в том, что, когда уведомление появляется и просит пользователя остановиться или продолжить, поток больше не работает, даже если для запуска снова установлено значение true. Я знаю, что поток не может ждать в окне уведомлений, но почему это так, когда пользователь устанавливает значение running в true, код не запускается снова?
Я уверен, что вам нужно изменить на volatile Boolean running = true; –
Я изменил его, но когда я нажимаю кнопку «Продолжить» в уведомлении, поток все еще не запускается снова. – user3166938
вам не нужно использовать clientThread. MyVoltageAlert - это один из видов фоновой темы. –