0

我的问题似乎很简单,但我的逻辑似乎不对。我正在尝试使用 UI 线程从其他类运行方法。我可以简单地通过像这样包装我的方法来做到这一点

    runOnUiThread(new Runnable() {
    public void run() {
        Log.d("UI thread", "I am the UI thread");
           ui.myMethod("changetext");
    }
});

但我的目标是有一个类来包装要在 UI 线程上运行的方法runOnUiThread(),因为在一个类中几乎有 5 次似乎非常不整洁。任何指针?

4

2 回答 2

2

如果您重复调用相同的 UI 方法,您可以通过创建Runnablein 方法来简化客户端代码:

private void updateUi(final String message) {
   runOnUiThread(new Runnable() {
      public void run() {
         ui.myMethod(message);
      }
   });
}

然后您的客户端代码将简单地调用updateUi("changetext"). (此代码假定这ui是最终的。如果不是,您可以传入最终引用。)

如果您每次都调用不同的 UI 方法,这不会为您带来任何好处,因为您需要为每个 UI 方法使用单独的更新方法。您现有的代码尽可能优雅。

于 2015-07-04T07:07:05.583 回答
0

如果您确实必须从多个类中执行此操作,则可以创建一个公共静态方法,该方法将在主线程上运行可运行对象。像这样的东西:

public class Util {
    public static void runOnUI(Activity a, Runnable r){
        a.runOnUIThread(r);
    }
}

您可以通过执行以下操作来调用它:

Util.runOnUI(getActivity(), mRunnable);
于 2015-07-04T06:37:49.277 回答