Android活动/意图与Qt信号/插槽与iPhone?/?
我试图调查不同移动平台上对象/组件之间通信的相似性 在Android上,有活动/意图的概念来传递信息,在Qt上我们有信号和插槽 这里出现的问题:Android活动/意图与Qt信号/插槽与iPhone?/?,iphone,android,qt,android-intent,signals-slots,Iphone,Android,Qt,Android Intent,Signals Slots,我试图调查不同移动平台上对象/组件之间通信的相似性 在Android上,有活动/意图的概念来传递信息,在Qt上我们有信号和插槽 这里出现的问题: 将活动/意图与信号/插槽概念进行比较是否合理?我认为最重要的区别在于不同的粒度级别。虽然活动/意图在“整个屏幕”上运行(更准确地说,活动不一定代表单独的屏幕),但信号/插槽是为较小的对象定义的,例如小部件(实际上,为从QObject派生的每个类) 考虑到平台独立性,您会说这些概念在根本上太不一样了,还是开发人员能够克服对象通信方面的技术差异,并充分“抽
我只能说android的意图和iOS之间的区别——在QT中从未做过任何事情,但现在我们开始:
意图(至少据我所知)主要用于表示手机状态的变化或改变不同对象的生命周期状态。它们通常不用于更细粒度的内容,如更改值的通知等。
在iOS中,通知系统存在于细粒度和粗粒度信息(也称为系统状态,甚至是模型更改)中,但其功能完全不同
我看不出这两种机制之间有任何直接的相似之处。有了Androids的意图,我可以开始新的活动,如果我真的需要的话,也许可以将一些值传递给另一个活动。使用iOS通知,我可以将任何类型的值从A传递到B,但必须实现自己的逻辑,例如在特定通知上启动服务。此外,iOS中的通知管理比Android的意图更为明确。为了比较iOS上的通知与Android上的意图,我总结了以下内容: 共性:
- 这两种机制都可用于注册报告应用程序需要的系统更改的任何通知(例如,电池电量更改)
- 这两种类型都可以触发生命周期状态更改
- 粒度级别
- 意图用于在活动、服务或广播接收者之间传递信息
- 通知可用于在任何类型的对象之间传递信息,无论是在单个GUI元素发生更改时通知sbdy的细粒度通知,还是在某些系统事件到达时作出反应的粗粒度通知
- 工控机
- 意图可用于应用程序间通信(隐式意图、未提及特定接收组件、后期绑定)以及应用程序内通信(显式意图、指定接收组件、早期绑定)
- 通知仅限于iOS上的应用程序内部通信(是否有其他方法实现此目的?)
- 用例:
- 意图通常用于启动其他活动(例如,显示另一个屏幕)或启动某些服务(例如,在后台播放音乐)
- 在iOS上,你必须实现自己的逻辑才能切换到另一个屏幕或开始在后台播放一些音乐
或者您对如何“抽象”这些机制并最小化移植工作有何建议?(跨平台解决方案还必须有在幕后将这些概念转换为本机代码的方法?)
我已经有一段时间没有研究Qt了,但我记得信号/插槽看起来非常像Objective-C(iOS)选择器(特别是对于IBAction方法)。典型用途
[button addTarget: controller action: @selector(resetState) forControlEvents: UIControlEventTouchUpInside];
vs
Qobject::connect(button, SIGNAL(clicked()), &controller, SLOT(resetState()));