首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >休眠时的服务活动通信数据处理

休眠时的服务活动通信数据处理
EN

Stack Overflow用户
提问于 2016-12-28 22:00:39
回答 0查看 211关注 0票数 0

项目声明:

我有一个简单的计数器应用程序,其中有6件事我正在计算。在我的可穿戴设备上,我有一个单选按钮组,它可以选择我想要计算的东西。然后,它显示手表上该项目的当前计数,然后我可以从手表中将其加1或减1。手表只是一个界面和交互设备。它不做任何处理。所有的信息处理和信息存储都是在手机上完成的。因此,手表只是发送信息和显示信息。

它的工作原理:

穿戴设备通过Wearable.MessageApi.sendMessage()向手机发送消息,手机则以Wearable.DataApi.putDataItem()作为响应。除了它引用的项之外,手表还会发送多种形式的信息,比如add/subtract/countRequest。移动设备仅响应所请求的项目计数,并且仅当其值与所显示的值不同时,手表才需要更改显示。

这是一个通用的信使理解问题。我有过

代码语言:javascript
复制
public class MyListenerService extends WearableListenerService{
    @Override
    public void onMessageReceived(MessageEvent me){
        showToast();
    }
}

监听程序正常工作。现在我想对侦听器做一些有用的事情,因为它实际上正在发送我需要的数据。但由于我的经验有限,我在服务和活动之间的沟通方面遇到了困难。我已经阅读了有关消息和广播接收器的内容。我正在寻找如何实现的想法,以获得我的结果或更好的理解。

从我尝试编写代码所收集的信息来看,服务不能直接与我的接口交互,因此我需要以某种方式与我的活动进行通信。我阅读的两种方式是消息传递(Handlers)和广播接收器( broadcastreceivers )。

这些方法中的每一个都可以实现这个功能,但是都有它们的缺点,这就是我希望得到更好的理解或帮助的地方。

对于处理程序:即使我可以创建静态处理程序类并在处理程序类中运行代码,因为它是静态的,所以我不能调用非静态对象,这意味着如果我尝试这样做,它会失败。

服务:

代码语言:javascript
复制
public class MyListenerService extends WearableListenerService{
    @Override
    public void onMessageReceived(MessageEvent me){
        Activity.mHandler.sendEmptyMessage(MyConstants.COMMAND);
    }
}

活动:

代码语言:javascript
复制
public static Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        doThis(msg.what);
    }
}; 

private void doThis(int command){
    processCommand();
    updateUserInterface();  
}

有没有一种方法可以实现上面的处理程序,因为当我处理消息时,如果我只是简单地干杯,它就会工作,所以我可以接收消息。我只是不能从静态对象调用非静态对象。因此,如果我只是在处理程序中抛出了doThis()的代码,那么我假设我也不能更新接口对象,因为我只是将它用作中间对象。当我使用LiveListeners时,onMessageReceived()在我的活动中,而不是一个单独的服务,我只是直接调用doThis(),它工作得很好。对于BroadcastReceiver:有很多代码要显示,所以我将只解释我的问题,您可能会从中得到答案。显然,您必须在onResume()/onPause()上注册/注销。这将阻止我在手机进入休眠状态时处理信息。运行服务的全部意义在于,当手机处于休眠状态或者活动不在前台时,我可以做一些事情。

在我做"LiveListeners“之前,只要活动在前台并且手机没有休眠,它就能正常工作。让它在睡眠状态下工作的唯一方法是让服务在后台工作。

所以我的问题是,处理这种情况的最好方法是什么,这样我就可以在手机睡眠时处理可穿戴设备发送给手机的信息。或者,是否有其他方法可以发送我找不到的数据?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41363640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档