如何使用Intent传递Handler

4

有两个活动,A和Screen,在A活动中,我创建了一个handler,并希望将其传递到Screen活动。

Handler error_handler = new Handler() {
public void handleMessage(Message msg) {
}};

Intent loginButton_intent = new Intent(A.this, Screen.class);
loginButton_intent.putExtra("URL", URL);
loginButton_intent.putExtra("IP_Addres", dvr_login_data.IP_Addres);
loginButton_intent.("HAND", error_handler); <- but this code is error 

我该如何传递处理程序?请提供简单易懂的答案。


你能否更具体地说明你想做什么?我有一种感觉,你正在用不寻常的方式尝试完成一些常见的任务。如果你想从屏幕类访问A类的函数,则有其他方法可以实现,而不是将处理程序放在意图中。 - Zelimir
查看这个答案:Android传递Handler给Service有点晚了,但希望能有所帮助。 - zwebie
请查看此答案:Android传递Handler给Service - zwebie
请查看此答案:Android传递Handler给Service有点晚了,但希望能有所帮助。 - zwebie
3个回答

5

仍在寻找答案吗? 我遇到了同样的问题,通过谷歌找到了这个问题,所以其他人也可能会出现。

无论如何,我在Android文档中找到了使用处理程序在服务和活动之间进行通信的解决方案。只需查看此处的远程信使服务示例:远程信使服务示例

基本上,他们使用信使作为客户端接口,用于服务中的本地处理程序。

问候, 迈克尔


3
简而言之,你不能把Handler作为extra传递,因为它既没有实现Serializable也没有实现Parcelable协议。使用Intent传输的对象必须遵循这些协议之一。
猜测: 我想,有一种替代方法可以通过创建一个Service来充当中间人来解决问题。但这需要进行一些测试。

2

你不能直接通过Activity的Extras传递Handler,但你可以传递Messenger(handler)。


你能澄清一下吗? - Acauã Pitta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接