要从其他线程更新GUI,基本上有两种主要方法: 使用java.lang.Runnable与这些方法中的任何一个: Activity.runOnUiThread(Runnable) View.post(Runnable) View.postDelayed(Runnable, long) Handler.post(Runnable) 使用android.os.Message: Handler.sendMessage(Message) / Handler.handleMessage(Message) 你也可以使用AsyncTask,但是我的问题更关注于更新一个非常简单的组件的用例。 让我们看看如何使用这两种方法来完成: 使用Runnables: TextViev tv = …; final String data = "hello"; Runnable r = new Runnable() { @Override public void run(){ tv.setText(data); } }; //Now call Activity.runOnUiThread(r) or handler.post(r), … 使用消息: Message m = handler.obtainMessage(UPDATE_TEXT_VIEW, "hello"); handler.sendMessage(m); //Now on handler implementation: @Override public […]
我刚刚阅读了RabbitMQ的Java API文档 ,发现它非常翔实和直接。 如何设置一个简单的发布/消费Channel的例子很容易理解。 但这是一个非常简单/基本的例子,它给我留下了一个重要的问题: 我如何设置1 +多个Channels来发布/消费多个队列? 比方说,我有一个RabbitMQ服务器上有3个队列: logging , security_events和customer_orders 。 所以我们要么需要一个Channel才能够发布/使用所有3个队列,或者更有可能有3个独立的Channels ,每个Channels专用于一个队列。 最重要的是,RabbitMQ的最佳实践规定我们为每个消费者线程设置1个Channel 。 对于这个例子,假设security_events只有一个消费者线程,但是logging和customer_order都需要5个线程来处理这个卷。 所以,如果我理解正确,那是否意味着我们需要: 1个Channel和1个消费者线程,用于发布/消费security_events ; 和 5个Channels和5个消费者线程,用于发布/消耗logging ; 和 5个Channels和5个消费者线索用于发布/消费customer_orders ? 如果我的理解被误导了,请先纠正我。 无论哪种方式,一些厌倦了RabbitMQ的老手能帮助我用一个体面的代码示例“连接点”来设置符合我的要求的出版商/消费者吗? 提前致谢!
我想知道WM_QUIT,WM_CLOSE和WM_DESTROY消息之间的区别是什么,在Windows程序,本质上:他们什么时候发送,除了什么是由程序定义的任何自动效果?
我正在使用SignalR的中心function( https://github.com/SignalR/SignalR )向所有订阅的客户端发布消息: public class NewsFeedHub : Hub public void Send(string channel, string content) { Clients[channel].addMessage(content); } 当通过Javascript调用“Send”时,这很好,但是我也想让Web应用程序发布消息(从ASP.NET MVC操作方法中)。 我已经尝试实例化一个新对象ob NewsFeedHub并调用Send方法,但是这会导致错误(因为Hub的底层“连接”未设置)。 有没有办法使用集线器没有连接?
我有一个R(ROCR)包,我需要在我的R环境中加载。 在加载软件包时,会打印一组消息。 这通常很好,但由于我的R脚本的输出被用于进一步的分析,我想完全禁用所有这些输出。 我怎么做? 而且,我更喜欢这样做,而不必修改ROCR,这样脚本的将来用户也不必这样做。 至今: sink()在这里不起作用 – 把stdout和std errredirect到/dev/null对我来说什么都不做。 毫不奇怪, options(warnings=-1)也不会做任何事情,因为这些并不是警告,本身就是被打印出来的。 有什么想法吗?
我有一个包含3个通讯的工作树: ¶〜myproject git:(master) git log commit a99cce8240495de29254b5df8745e41815db5a75 Author: My Name <my@mail.com> Date: Thu Aug 16 00:59:05 2012 +0200 .gitignore edits commit 5bccda674c7ca51e849741290530a0d48efd69e8 Author: My Name <my@mail.com> Date: Mon Aug 13 01:36:39 2012 +0200 Create .gitignore file commit 6707a66191c84ec6fbf148f8f1c3e8ac83453ae3 Author: My Name <my@mail.com> Date: Mon Aug 13 01:13:05 2012 +0200 Initial commit (with a misleading message) […]
我正在寻找(简单的)JMS是一个很好的解决scheme的问题的例子,也是为什么JMS在这些情况下是一个好的解决scheme的原因。 在过去,我只是简单地使用数据库作为将消息从A传递给B的手段,而消息不一定要立即由B处理。 这种系统的一个假设例子是,所有新注册的用户都应在注册后的24小时内收到欢迎电子邮件。 为了说明起见,假设数据库不logging每个用户注册的时间,而是将每个新用户的引用(外键)存储在pending_email表中。 电子邮件发件人作业每24小时运行一次,向该表中的所有用户发送电子邮件,然后删除所有pending_emaillogging。 这似乎是JMS应该使用的那种问题,但是我不清楚JMS对于我所描述的方法有什么好处。 DB方法的一个优点是消息是持久的。 我知道JMS消息队列也可以被持久化,但是在这种情况下,JMS和我所描述的“数据库作为消息队列”方法似乎没什么区别? 我错过了什么? – 唐
我只是想知道是否有一种方法来调用一个方法,我用一个stringdynamic地build立方法的名称。 例如我有一个称为loaddata的方法 -(void)loadData; 打电话给我,通常会这样称呼它 [self loadData]; 但我想能够dynamic调用一个string例如 NSString *methodName = [[NSString alloc] initWithString:@"loadData"]; [self methodName]; 这是一个愚蠢的例子,但我希望你明白我的观点。 我正在使用它来build立我的iPad应用程序的数据绑定类。 很难解释,但让它火,我需要解决如何调用一个string的方法。 有任何想法吗? 谢谢
我有我的代码中的这个try块: try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise ValueError(errmsg) 严格来说,我实际上是在引发另一个 ValueError ,而不是由do_something…()引发的ValueError ,在这种情况下被称为err 。 如何将自定义消息附加到err ? 我尝试下面的代码,但由于err , ValueError 实例 ,不能被调用,失败: try: do_something_that_might_raise_an_exception() except ValueError as err: errmsg = 'My custom error message.' raise err(errmsg)
而不是写自己的图书馆。 我们正在开发一个项目,这个项目将是一个自我分割的服务器池,如果一个部分变得太重了,那么pipe理员会把它分开,并把它作为一个单独的进程放在另一台机器上。 它也会提醒所有连接的客户端,这会影响连接到新的服务器。 我很好奇使用ZeroMQ进行服务器间和进程间通信。 我的合作伙伴宁愿推出自己的。 我期待社区回答这个问题。 我自己是一个相当新手的程序员,只是了解消息队列。 正如我已经google和阅读,似乎每个人都在使用消息队列的各种事情,但为什么? 是什么让他们比写自己的图书馆更好? 他们为什么这么常见,为什么这么多?