java – 如何将数据从单独的线程类传递到Android中的活动

前端之家收集整理的这篇文章主要介绍了java – 如何将数据从单独的线程类传递到Android中的活动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用类中的AudioRecord分析音频.我的问题是,我不知道我要尝试的路线是否正确,并将其线程化为一个单独的流程.我想要做的是在主UI线程中监听该进程,并根据线程中的数据不断更新文本框.

这是我到目前为止:

//RecordActivity.java
[...]
public class RecordActivity extends Activity {
    final Handler mHandler = new Handler();
    final Runnable mUpdateResults = new Runnable() {
        public void run() {
            updateResultsInUi();
        }
    };
    RecordThread t = new RecordThread();

private OnClickListener mClickListener = new OnClickListener() {

  public void onClick(View v) {
    t.start();

  }
}

//RecordThread.java
public class RecorderThread extends Thread {
[...]

@Override
public void run() {
[...audio process code...]
}

有没有办法将我的RecordThread类中的数据回发到RecordActivity类?有没有办法使用2个不同的.java文件连接处理程序?

此外,这甚至是正确的方法吗?我应该使用AsyncTask吗?

最佳答案
将mHandler作为参数传递给RecordThread类的构造函数,并使用mHandler.obtainMessage(…).sendToTarget()将数据传递给Activity类

在RecordActivity类中,声明并使用Handler作为:

private final Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
    }

然后它依赖于你如何调用obtainMessage(),如果你使用了,例如,你可以通过使用msg.what,msg.arg1和msg.arg2来获取它们的getsMessage(int what,int arg1,int arg2).

猜你在找的Android相关文章