【问题标题】:Android: Managing a Service from a WidgetAndroid:从小部件管理服务
【发布时间】:2011-07-14 13:34:37
【问题描述】:

我确信这是一个简单的答案,但它让我发疯,我希望有人可以让我摆脱痛苦。

我有一个 android 活动、小部件和服务。该服务在后台运行声音,无论是一段时间还是连续。因为我希望声音一直运行到停止,所以我在服务中没有 stopSelf() 方法。这对活动来说一切都很好而且很花哨,因为我让它在播放时启动服务,在停止时停止服务。现在我想在这个最新的更新中抛出一个小部件。所以这就是我卡住的地方。因为它是一个广播接收器,所以我的功能非常有限。我可以调用 context.stopService,但我只想在按下按钮时停止服务。我只能找到一种方法来设置带有 pendingIntent 的 onClickListener。

在我的服务的 onStartCommand() 方法中,我从传入的意图中额外读取了“循环”。所以我尝试只传入一个零值,但由于某种原因它似乎没有读取它。我知道 onStartCommand() 正在服务中被调用,因为音乐正在播放,但无论我在意图上投入了什么额外内容,它似乎都没有阅读它,我不知道为什么。所以我的问题是,使用小部件按钮停止服务的最佳策略是什么?我希望这是一个简单的答案,否则我想我可以创建一个新的活动或广播接收器来处理按钮点击,但这似乎没有必要。任何建议将不胜感激!谢谢!

【问题讨论】:

    标签: android service widget android-appwidget android-pendingintent


    【解决方案1】:

    您传递给 Widget 中的按钮的 PendingIntent 应该能够像任何其他 Intent 一样向服务发送 Intent extras:您应该能够在 onStartCommand 中检测到该 Intent,然后告诉服务停止发出声音并自行停止。如果没有一些代码,很难说出你可能做错了什么。

    【讨论】:

    • 我终于明白了。我没有正确标记我的待处理意图,所以附加内容没有更新。不过感谢您的快速回复。 :)
    猜你喜欢
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2011-06-21
    相关资源
    最近更新 更多