Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动/意图与Qt信号/插槽与iPhone?/?_Iphone_Android_Qt_Android Intent_Signals Slots - Fatal编程技术网

Android活动/意图与Qt信号/插槽与iPhone?/?

Android活动/意图与Qt信号/插槽与iPhone?/?,iphone,android,qt,android-intent,signals-slots,Iphone,Android,Qt,Android Intent,Signals Slots,我试图调查不同移动平台上对象/组件之间通信的相似性 在Android上,有活动/意图的概念来传递信息,在Qt上我们有信号和插槽 这里出现的问题: 将活动/意图与信号/插槽概念进行比较是否合理?我认为最重要的区别在于不同的粒度级别。虽然活动/意图在“整个屏幕”上运行(更准确地说,活动不一定代表单独的屏幕),但信号/插槽是为较小的对象定义的,例如小部件(实际上,为从QObject派生的每个类) 考虑到平台独立性,您会说这些概念在根本上太不一样了,还是开发人员能够克服对象通信方面的技术差异,并充分“抽

我试图调查不同移动平台上对象/组件之间通信的相似性

在Android上,有活动/意图的概念来传递信息,在Qt上我们有信号和插槽

这里出现的问题:

  • 将活动/意图与信号/插槽概念进行比较是否合理?我认为最重要的区别在于不同的粒度级别。虽然活动/意图在“整个屏幕”上运行(更准确地说,活动不一定代表单独的屏幕),但信号/插槽是为较小的对象定义的,例如小部件(实际上,为从QObject派生的每个类)

  • 考虑到平台独立性,您会说这些概念在根本上太不一样了,还是开发人员能够克服对象通信方面的技术差异,并充分“抽象”应用程序逻辑,从而最大限度地减少移植工作?怎么做

  • iOS上是否有类似的概念?(例如,目标行动机制-或更像Objective提供的委托或通知)


  • 我只能说android的意图和iOS之间的区别——在QT中从未做过任何事情,但现在我们开始:
    意图(至少据我所知)主要用于表示手机状态的变化或改变不同对象的生命周期状态。它们通常不用于更细粒度的内容,如更改值的通知等。
    在iOS中,通知系统存在于细粒度和粗粒度信息(也称为系统状态,甚至是模型更改)中,但其功能完全不同


    我看不出这两种机制之间有任何直接的相似之处。有了Androids的意图,我可以开始新的活动,如果我真的需要的话,也许可以将一些值传递给另一个活动。使用iOS通知,我可以将任何类型的值从A传递到B,但必须实现自己的逻辑,例如在特定通知上启动服务。此外,iOS中的通知管理比Android的意图更为明确。

    为了比较iOS上的通知与Android上的意图,我总结了以下内容:

    共性:

    • 这两种机制都可用于注册报告应用程序需要的系统更改的任何通知(例如,电池电量更改)
    • 这两种类型都可以触发生命周期状态更改
    差异:

    • 粒度级别
      • 意图用于在活动、服务或广播接收者之间传递信息
      • 通知可用于在任何类型的对象之间传递信息,无论是在单个GUI元素发生更改时通知sbdy的细粒度通知,还是在某些系统事件到达时作出反应的粗粒度通知

    • 工控机
      • 意图可用于应用程序间通信(隐式意图、未提及特定接收组件、后期绑定)以及应用程序内通信(显式意图、指定接收组件、早期绑定)
      • 通知仅限于iOS上的应用程序内部通信(是否有其他方法实现此目的?)

    • 用例:
      • 意图通常用于启动其他活动(例如,显示另一个屏幕)或启动某些服务(例如,在后台播放音乐)
      • 在iOS上,你必须实现自己的逻辑才能切换到另一个屏幕或开始在后台播放一些音乐
    最后,我的问题归结为:这些概念似乎根本不同,这是设计独立于平台的Android-/iOS应用程序的真正障碍吗?
    或者您对如何“抽象”这些机制并最小化移植工作有何建议?(跨平台解决方案还必须有在幕后将这些概念转换为本机代码的方法?)

  • Qt的信号和插槽无法与Android的意图相比。信号和插槽适用于Qt中的所有内容;它来自QObject类,QObject类是所有Qt对象的超类,因此是Qt的核心概念。另一方面,Android使用多种对象通信机制。它对活动和服务使用意图,但也对事件处理使用回调。它们还提供了不同级别的灵活性:您可以向信号和插槽提供尽可能多的参数,可以在意图上附加一些数据,但只能将视图对象传递给android回调
  • 这是根本不同的,因为Android并不像上面解释的那样只使用意图
  • 我不能回答这个问题,因为我不是iOS程序员

  • 我已经有一段时间没有研究Qt了,但我记得信号/插槽看起来非常像Objective-C(iOS)选择器(特别是对于IBAction方法)。典型用途

    [button addTarget: controller action: @selector(resetState) forControlEvents: UIControlEventTouchUpInside];
    
    vs

    Qobject::connect(button, SIGNAL(clicked()), &controller, SLOT(resetState()));