- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个通过 USB 线连接到计算机的 android 应用程序。我使用 TCPServer 类来发送消息和收听。例如:
当我发送如下消息时:request:x
我得到响应:response:x:55
我需要根据收到的回复更改我的 Activity 。目前我通过将 Activity 和 Activity 类对象传递给 TCPServer 的构造函数暂时解决了这个问题
public TCPServer(int portNum, Activity activity, IntroActivity ia) {
super();
port = portNum;
this.activity = activity;
this.ia = ia;
}
然后在我收到回复后:
void updateButton(final int color, final String txt) {
activity.runOnUiThread(new Runnable() {
public void run() {
ia.getConnectionButton().setBackgroundColor(color);
ia.getConnectionButton().setText(txt);
}
});
}
如您所见,这根本没有效果。每当收到相关变量时,我都需要以某种方式通知 Activity 。我为 GlobalVariables 使用了一个类,并在 listen() 之后更改了那些静态变量,但是我在通知 Activity 时遇到了麻烦。
最佳答案
首先,传递 Activity 实例几乎总是不好的做法。这是一个糟糕的时期。
定义一个接口(interface)并使用回调让 Activity 知道已收到响应。
public interface ResponseReceivedListener {
void onResponseReceived(int arg1, string arg2); // <- add arguments you want to pass back
}
在您的 TCPServer 类中:
ArrayList<ResponseReceivedListener> listeners = new ArrayList<>();
// ...
public void setResponseReceivedListener(ResponseReceivedListener listener) {
if (!listeners.contains(listener) {
listeners.add(listener);
}
}
public void removeResponseReceivedListener(ResponseReceivedListener listener) {
if (listeners.contains(listener) {
listeners.remove(listener);
}
}
当您收到回复时:
for (ResponseReceivedListener listener : listeners) {
listener.onResponseReceived(arg1, arg2);
}
在您的 Activity 中:
public class MainActivity extends Activity implements ResponseReceivedListener {
// ...
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
tcpServer.setResponseReceivedListener(this);
// ...
}
public void onResponseReceived(int arg1, string arg2) {
// do whatever you need to do
}
// ...
}
全靠内存,错别字请见谅
这种方法解耦了类。 TCP 服务器不知道这些 Activity 。它只是回调任何已注册的监听器。这些听众可能是 Activity ,也可能是服务。它们可能是 MySparklyUnicorn 的实例。服务器既不知道也不关心。它只是说“如果有人感兴趣,我已经收到回复,这里是详细信息”。
关于android - 更改 GlobalVariables 时如何通知 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660671/
按照您的建议(或至少尝试这样做),我尝试了一些选项,但问题仍然存在,所以一定有我遗漏的东西。 我已经包含了更完整的代码 setwd("C:/naapp") #' @import utils #' @i
在我的 IR 中我有一个字符串全局常量: @.str = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 这个常量在整个模块的不
我有一个通过 USB 线连接到计算机的 android 应用程序。我使用 TCPServer 类来发送消息和收听。例如: 当我发送如下消息时:request:x 我得到响应:response:x:55
当我为 CRAN 运行 R 包检查(在 Windows 7、Rstudio、R 2.15.3 和 Rtools30 上)时,我无法摆脱一系列“无可见绑定(bind)”注释。 我已经尝试了以下但没有成功
我是一名优秀的程序员,十分优秀!