У меня есть приложение для Android, у которого есть класс, который запускает поток. В основном то же самое, что и here.Приложение для Android - Резюме темы
В настоящее время поток обновляет текстовое представление с вычисленным значением каждые 500 мс и дополнительно регистрирует значение, поэтому я вижу его в adb-logcat.
Когда я выхожу из своего приложения с помощью кнопки с обратной связью устройства, поток по-прежнему работает в фоновом режиме. (Это то, что я хочу). Adb-logcat все еще дает мне значения, которые поток вычисляет.
Но когда я снова открываю приложение, текстовое изображение больше не обновляется!
Что мне нужно сделать, чтобы возобновить обновление текстового поля, когда я снова открою приложение?
Вот мой упрощенный код:
SensorProcessor.java
public class SensorProcessor implements Runnable {
protected Context mContext;
protected Activity mActivity;
private volatile boolean running = true;
//Tag for Logging
private final String LOG_TAG = SensorProcessor.class.getSimpleName();
public SensorProcessor(Context mContext, Activity mActivity){
this.mContext = mContext;
this.mActivity = mActivity;
}
public void run() {
while (running){
try {
final String raw = getSensorValue();
mActivity.runOnUiThread(new Runnable() {
public void run() {
final TextView textfield_sensor_value;
textfield_sensor_value = (TextView) mActivity.findViewById(R.id.text_sensor);
textfield_sensor_value.setText("Sensor Value: " + raw); // <-------- Does not update the field, when app resumes
Log.v(LOG_TAG, raw); // <-------- Still working after the app resumes
}
});
Thread.sleep(100);
} catch (InterruptedException e) {
//When an interrupt is called, we set running to false, so the thread can exit nicely
running = false;
}
}
Log.v(LOG_TAG, "Sensor Thread finished");
}
}
MainActivity.java
public class MainActivity extends Activity implements OnClickListener, OnInitListener {
//Start the Thread, when the button is clicked
public void onClick(View v) {
if (v.getId() == R.id.button_start) {
runnable = new SensorProcessor(this.getApplicationContext(),this);
thread = new Thread(runnable);
thread.start();
}
}
В методе onDestroy установленный флаг выполнения на false – SKT
Вам нужно показать код, где и как вы создаете новый 'Thread', и где вы создаете свой' runnable'. – eleven
Добавлен код, где я создаю новую тему –