文本框在重新开始后停止工作

时间:2015-04-29 08:38:57

标签: java android

当我的应用启动时,我会在 onStart 方法中执行此操作:

if (MainActivity.s_polarDeviceService == null) {
    MainActivity.s_polarDeviceService = new PolarDeviceService(this, mHandler);
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");
    wl.acquire();
}

PolarDeviceService 类是常规类,它产生一个连接/重新连接到极性蓝牙设备并从中读取数据的线程。

当我按下手机上的'返回'按钮时,我的活动被破坏,当我再次产生它时,它会正常重建,但视图上的所有控件都没有反应。例如,从活动处理程序执行的此代码无效:

SensorData sensorData =(SensorData) msg.obj;
TextView txtBpm = (TextView) findViewById(R.id.text_output);
TextView txtMinBpm = (TextView) findViewById(R.id.text_min);
TextView txtMaxBpm = (TextView) findViewById(R.id.text_max);
TextView txtAvgBpm = (TextView) findViewById(R.id.text_avg);
TextView txtSensorStatus = (TextView) findViewById(R.id.txtSensorStatus);
txtBpm.setText("BPM: " + sensorData.getBpm());
txtMaxBpm.setText("max: " + sensorData.getMaxBpm());
txtMinBpm.setText("min: " + sensorData.getMinBpm());
txtAvgBpm.setText("avg: " + sensorData.getAvgBpm());

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

问题是,在重新创建Activity之后,我的服务仍然有旧的Handler引用,它没有在新的UI线程上执行。