我确信这是一个简单的答案,但它让我发疯,我希望有人可以让我摆脱困境。
我有一个Android活动,小部件和服务。该服务在后台运行声音,无论是设定的时间还是连续的。因为我希望声音一直运行直到停止命中,我在服务中没有stopSelf()方法。这对活动来说很好,很花哨,因为我在播放时有startService,在stop时有stopService。现在我想在这个最新的更新中抛出一个小部件。所以这就是我被困住的地方。因为它是一个广播接收器,所以它的功能非常有限。我可以调用context.stopService,但我只想在按下按钮时停止服务。我只能找到一种方法来设置一个带有pendingIntent的onClickListener。
在我的服务的onStartCommand()方法中,我从传入的意图中读取了额外的“循环”。所以我尝试传递零值,但由于某种原因它似乎没有读取它。我知道onStartCommand()是在服务中被调用的,因为音乐正在播放,但不管我对意图的额外投入是多少,它似乎都没有阅读它,我不明白为什么。所以我的问题是,用于从小部件按钮停止服务的最佳策略是什么?我希望这是一个简单的答案,否则我想我可以创建一个新的活动或广播接收器来处理按钮点击,但这似乎是不必要的。任何建议将非常感谢!谢谢!
答案 0 :(得分:1)
传递给Widget中按钮的PendingIntent
应该能够像其他任何Intent一样向服务发送Intent附加内容:您应该能够在onStartCommand
中检测到Intent,然后告诉服务停止声音并停止自己。没有一些代码,很难说出你可能做错了什么。