【发布时间】:2016-04-21 06:18:56
【问题描述】:
所以,我正在设计一个通过蓝牙加密狗与某些硬件交互的 Android 应用程序。
请求/响应模型有点慢(有时需要 1-2 秒才能收到对特定请求的响应),因此我将请求发送和响应接收模型保留在不同的线程中。
为了达到同样的效果,我创建了一个接口ResultPoster,其中包含一些回调方法,例如onMyResponse()。
这个接口是由我的应用程序的各种Activity 和 UI 组件实现的,但是我们知道我们根本不能直接从另一个线程发布到 UI 或 Main 线程,因此我使用 @所有 UI 组件(基本上是活动或片段)中的 987654324@。
例如
runOnUiThread(new Runnable() {
@Override
public void run() {
stopProgressDialog();
launchActivity();
}
});
现在我的代码中有很多这样的块,并且随着一些逻辑变得复杂,它们正在增加。
现在,我想保持我的代码干净,并在整个应用程序中创建一个桥梁,这将帮助我将结果从另一个线程发布到 UI,这只是基于我所使用的 context。
你能建议我一些其他的方法吗?
-编辑-
在不同的活动中使用多个这样的代码块来实现相同的目标是不是有点矫枉过正?
【问题讨论】:
-
这很容易。做一个共同的家长活动。将您的每个活动扩展到此活动,并将活动用作每个地方的上下文。或者您可以使用 Activity 上下文在不同的单独 Bean 类中执行相同操作
-
@MD 假设我创建了一个 ParentActivity,它将被我的所有应用程序活动扩展。但是,我必须在这些活动中使用
runOnUIThread方法吗?或者我们正在谈论在 ParentActivity 中只保留一个runOnUIthread?在这种情况下如何传递上下文,在哪里?
标签: android multithreading design-patterns