我正在为android中的knx模块开发一个串口应用程序。我可以向knx modulde发送和接收赞扬。当从serialport接收到消息时,我想更改ui(例如按钮属性)。我用处理程序试过了,但我无法更改ui。帮我一把。
@覆盖公共空OnSerialsData(最终字节[]缓冲区,最终int大小){......}
它是我的串行端口侦听器函数,调用insine ReadThread。此线程从我的活动的不同包中开始。我想用这种方法向主要活动发送一条消息。
只是扩展了@auselen的答案。
在您的活动上创建以下内容:
public void messageReceived(final String msg){
runOnUiThread(new Runnable() {
@Override
public void run() {
// Put here your code to update the UI
}
});
}
然后你可以从任何引用你活动的类中调用它。如果类没有对活动的引用,那么应该将引用传递给它。
首先,您必须在主活动中创建一个静态处理程序:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public static Handler myHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Log.e("Test", msg.getData().getCharSequence("MAINLIST").toString());
}
};
}
然后在socket类中:
public void OnSerialsData(final byte[] buffer, final int size) {
Message msg = MainActivity.myHandler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putCharSequence("MAINLIST", "IS_OK");
msg.setData(bundle);
MainActivity.myHandler.sendMessage(msg);
}
但是您必须确保在调用OnSerialsData方法之前必须创建处理程序。
我希望这能有所帮助。
您可以使用ctivity.runOnUiThread()与UI线程通信。阅读更多关于进程和线程的信息,尤其是关于工作线程的信息。
例如,在串行数据中,您可以调用
mActivity.runOnUiThread(new Runnable() {
public void run() {
mActivity.mButton.setText("message arrived!");
}
}
问题内容: 我需要向程序中运行的每个线程发送信息,并且每个线程都必须处理该信息。 我无法使用常规队列来执行此操作,因为那样一来,一旦一个线程从队列中删除了数据,所有其他线程将无法再看到它。 实现此目标的最佳方法是什么? 问题答案: 一种方法是在 每个 线程中都有一个队列,广播信息的功能负责将消息插入每个线程的队列中。 例如,这类似于消息队列在Windows中的工作方式。每个执行GUI操作的线程都有
问题内容: 我可以发送消息给父进程吗? 主 子进程 问题答案: 简而言之: 较长的例子,我前段时间写过:
我是如何临时修复它的:考虑我已经实现了下面的方法 它向websocket会话发送一个TextMessage。我无法使整个方法同步,因为多个线程可以为不同的websocketSessions和消息调用它。我也不能将会话放在同步块中(尝试了但没有工作) 虽然,我这样解决了我的问题
我有一个应用程序,它定期生成原始JSON消息数组。我能够使用avro-tools将其转换为Avro。我这样做是因为由于Kafka-Connect JDBC接收器的限制,我需要消息包含模式。我可以在记事本上打开这个文件,看到它包括模式和几行数据。 现在,我想将其发送到我的中央Kafka代理,然后使用Kafka Connect JDBC接收器将数据放入数据库。我很难理解我应该如何将这些Avro文件发送
我正在尝试使用Slack传入的Webhook发送消息。我有以下代码。它运行,但当我检查我的松弛时,没有消息。谁能看出我做错了什么。
本文向大家介绍C#向无窗口的进程发送消息,包括了C#向无窗口的进程发送消息的使用技巧和注意事项,需要的朋友参考一下 注:本文适用.net2.0+的winform程序 一个winform程序,我希望它不能多开,那么在用户启动第二个实例的时候,作为第二个实例来说,大概可以有这么几种做法: 1.弹个窗告知用户【程序已运行】之类,用户点击弹窗后,退出自身 2.什么都不做,默默退出自身 3.让已运行的第一个