繁体   English   中英

在Android中延迟任务

[英]Delaying a task in Android

我正在使用智能手机从外部套件接收加速度值。 我的主要目标是检测跌倒,并且我正在使用以下算法来实现这一目标:

// Method to be triggered, when data is received over BLE interface
public void onCharacteristicChanged(BluetoothGattCharacteristic c) {
    data = parse(c);
}

public T getData() {
    return data;
}


@Override
public String getDataString() {
    final float[] data = getData();
    return TiSensorUtils.coordinatesToString(data);
}

@Override
public float[] parse(final BluetoothGattCharacteristic c) {    
    Integer x = c.getIntValue(FORMAT_SINT8, 0);
    Integer y = c.getIntValue(FORMAT_SINT8, 1);
    Integer z = c.getIntValue(FORMAT_SINT8, 2);

    double X = x / 64.0;
    double Y = y / 64.0;
    double Z = -1 * z / 64.0;
    double G = Math.sqrt((X * X) + (Y * Y) + (Z * Z));
    double L = 1;                 

    if ((G > 1.3 || G < 0.7) && timerStatus.equals("OFF"))
    {           
        // I WANT THE DELAY HERE !!!!!!!!
        if ((Z < -0.9 && Z > -1.1 || (Z < 1.1 && Z > 0.9)) && (X < 0.3 && X > -0.3) && (Y < 0.3 && Y > -0.3))
        {
            cdt = new accCountDownTimer(4000, 1000);
            cdt.start();
            timerStatus = "ON";
            return new float[]{(float)X, (float)Y, (float)Z, (float)G, (float)L};                   
        }
    }       
        return new float[]{(float)X, (float)Y, (float)Z, (float)G};                 
}

我想在第一个“ if”语句之后添加一种任务延迟功能,但是由于我不想阻塞线程,因此Thread.Sleep(2000)在这种情况下将毫无用处。 我已经在C#中成功实现了相应的算法,为此我使用Task.delay(2000)。 java中有类似的方法吗?

    snoozeTimer.
    schedule(new TimerTask() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    onSnoozeTimerExpiry();
                }
            });
        }
    }, snoozeDuration);

采用

new Handler().postDelayed(Runnable, delaytime);

更新的答案:

你可能想这样做

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            data = parse(c);
        }
    }, delayMillis);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM