但是如果我在其他线程中捕获值,我不知道这些值是否正确。e、 g.x是最后一个值,y和z是上一个值
所以我写这个程序来测试,如果值是错的,
Log.v("abc not equal", "a:$a b:$b c:$c")
将被调用
但结果没有问题,a b c总是相等的
我应该相信这个结果吗?为什么a b c永远不会不同(e、 g.a:10 b:9 c:9),手在等吗?
class MainActivity : AppCompatActivity() {
var a=0
var b=0
var c=0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_NORMAL)
val handler = Handler()
val run = object : Runnable{
override fun run() {
if(!(a == b && b == c)){
Log.v("abc not equal", "a:$a b:$b c:$c")
}
handler.postDelayed(this,5)
}
}
handler.postDelayed(run,5)
}
private val sensorListener = object: SensorEventListener {
override fun onAccuracyChanged(p0: Sensor?, p1: Int) {}
override fun onSensorChanged(event: SensorEvent?) {
if(event != null){
val xRaw = event.values[0]
val yRaw = event.values[1]
val zRaw = event.values[2]
if(a>100){
a=0
b=0
c=0
}
a+=1
slow()
b+=1
slow()
c+=1
}
}
}
fun slow(){
var x = 0
while (x < 50000) {
x++
if(x>10) {
var y = Random().nextInt(x - 1)
}
}
}
}