【问题标题】:Design problem with callback functions in androidandroid中回调函数的设计问题
【发布时间】:2010-06-16 22:39:51
【问题描述】:

我目前正在开发一个正在访问 wifi 值的 android 应用程序,也就是说,该应用程序需要扫描所有接入点及其特定的信号强度。 我知道我必须扩展类BroadcastReceiver 覆盖方法BroadcastReceiver.onReceive(Context context, Intent intent),当值准备好时调用该方法。
也许存在由 android 系统本身提供的解决方案,但我对 android 比较陌生,所以我需要一些帮助。
我遇到的问题是我有一个类(一个活动,因此由用户控制)需要这个扫描结果来处理两个不同的事情(首先将值保存在数据库中,或者第二个,将它们用于进一步计算,但不能同时使用两者一瞬间!) 那么如何设计回调系统,以便将扫描结果从onReceive(Context context, Intent intent)“传输”到用户想要的操作? 我的第一个解决方案是为每个对 wlan 感兴趣的类在查询值时必须提交的用例(保存或用于计算)定义枚举。但这将强制BroadcastReceiverextending 类保存当前枚举并将其用作查询类的回调函数中的参数(此查询类需要知道它在被回调时要求什么)
但这在我看来有点肮脏;)
那么有人对此有什么好主意吗?

【问题讨论】:

    标签: android callback broadcast broadcastreceiver


    【解决方案1】:

    您可能希望在每个活动中使用匿名内部类和/或在每个活动中使用派生BroadcastReciever 的实例,并将其注册到Context#registerReceiver。然后在调用onRecieve 时让它与它的父级交互。我认为您正在尝试做的是在您的清单文件中定义一个BroadcastReciever,然后以这种方式将数据传递给一个活动。这不是实现您想要的最佳方式。

    【讨论】:

    • 我想你误解了我的问题。我希望扫描过程与 GUI 活动完全分开。 GUI 拥有一个对象,该对象提供了获取使用 wlan 值计算的值的方法。这意味着 GUI 拥有的对象将启动某种服务或线程来扫描 wlan 值,然后回调或通知所有等待某种“值就绪”信号的侦听器。问题是,我必须同时处理几个参数,如“扫描次数”、“如何扫描”等,GUI 不再知道这些参数(因为它被回调)
    猜你喜欢
    • 2017-06-13
    • 2011-05-18
    • 1970-01-01
    • 2019-01-29
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    相关资源
    最近更新 更多