Android更新ui线程元素-最佳实践?

Android更新ui线程元素-最佳实践?,android,ui-thread,handlers,Android,Ui Thread,Handlers,我有一个应用程序,显示一些测量值,如温度、速度等 我想或多或少地坚持MVC模式,这样我就可以在值出现时(从蓝牙组件)接收它们,并将它们排序到特殊的值处理程序中。它们应该计算东西等等(从地理坐标等计算速度),并将值传递给视图组件,视图组件扩展活动并应该打印值。一些值处理程序将在它们自己的线程中,或者整个值处理程序将是一个线程 因此,首先我尝试了“runOnUIThread”,但这并不是我想要的,因为有很多值,UI线程中不会发生其他任何事情,这不是MVC模式的想法 然后我考虑了处理程序,但我遇到了一

我有一个应用程序,显示一些测量值,如温度、速度等

我想或多或少地坚持MVC模式,这样我就可以在值出现时(从蓝牙组件)接收它们,并将它们排序到特殊的值处理程序中。它们应该计算东西等等(从地理坐标等计算速度),并将值传递给视图组件,视图组件扩展活动并应该打印值。一些值处理程序将在它们自己的线程中,或者整个值处理程序将是一个线程

因此,首先我尝试了“runOnUIThread”,但这并不是我想要的,因为有很多值,UI线程中不会发生其他任何事情,这不是MVC模式的想法

然后我考虑了处理程序,但我遇到了一个问题,我无法从另一个线程“找到”处理程序,因此我必须将其传递给其他线程,这是我必须做的大量头更改

然后我想到了一个带有静态方法的私有类,它可以从任何地方访问,但不知道这是否聪明

你有什么建议,能给我举个例子吗?

你试过了吗?您可以创建一个扩展AsyncTask并包含简单回调接口的类,如:

class CalculationTask extends AsyncTask<Integer, Integer> {
...
    public interface Callback{
        void onCalculationComplete(Integer result);
    }
...
}
计算完成后,AsyncTask将调用其
onPostExecute()
方法。在这个方法中,您可以引用您的回调接口

@Override
protected void onPostExecute(Integer result){
    mCallback.onCalculationComplete(result);
}
然后,您应该在类中创建AsyncTask的实例,该类接收bluetooth值,并在那里实现回调接口

new CalculationTask(this, new CalculationTask.Callback(){

    @Override
    public void onCalculationComplete(Integer result){
        mView.setText("The new value is "+result);
    }
}).execute(valueFromBluetooth);
new CalculationTask(this, new CalculationTask.Callback(){

    @Override
    public void onCalculationComplete(Integer result){
        mView.setText("The new value is "+result);
    }
}).execute(valueFromBluetooth);