当我的BroadcastReceiver触发警报时,我正在尝试启动我的服务。我没有收到任何错误,代码运行,但它没有启动我的服务,我没有得到任何错误。这可能是我的服务或清单中的问题吗?
我注意到,在Intent和Contexts方面,我经常遇到问题。我试图阅读它,但我找不到一个能以一种好的方式解释它的网站。有什么建议吗?
public class Alarm extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(1000);
Intent myService = new Intent(BackgroundService.class.getName());
context.startService(myService);
}
}
****************** 清单*******
<service android:name=".BackgroundService" android:process=":remote">
<intent-filter>
<action android:name="se.davidsebela.ShutMeUp.BackgroundService" />
</intent-filter>
</service>
<receiver android:process=":remote" android:name="Alarm"></receiver>
</application>
答案 0 :(得分:2)
Intent myService = new Intent(BackgroundService.class.getName());
这只会通过一个动作创建一个新意图。该操作是BackgroundService类的名称。当您使用startService()
时,这将无效。
而是使用获取类和上下文作为参数的intent构造函数:
Intent myService = new Intent(context, BackgroundService.class);
答案 1 :(得分:0)
得到它: - 有点儿。现在我知道了这个问题。您建议的代码有效。
Intent myService = new Intent(context, TestService.class);
context.startService(myService);
但问题是我的服务已在运行。我以为它被杀了,但只有计时器停止了,服务仍在运行。因此,当执行上面的两行时,它基本上没有任何剂量。
现在我必须找出如何真正杀死它:)