从BroadcastReceiver启动服务
我的应用程序中有一个服务和广播接收器,但是如何直接从广播接收器启动服务? 运用
startService(new Intent(this, MyService.class));
在广播接收机不工作,有什么想法?
谢谢!
编辑:
context.startService(..);
作品,我忘了上下文部分
别忘了
context.startService(..);
应该是这样的:
Intent i = new Intent(context, YourServiceName.class); context.startService(i);
一定要将该服务添加到manifest.xml
使用您的BroadcastReceiver的onReceive
方法的context
来启动您的服务组件。
@Override public void onReceive(Context context, Intent intent) { Intent serviceIntent = new Intent(context, YourService.class); context.startService(serviceIntent); }
最佳实践 :
特别是在从BroadcastReceiver
启动时创build一个意图,不要把这作为上下文。 采取context.getApplicationContext()
如下
Intent intent = new Intent(context.getApplicationContext(), classNAME); context.getApplicationContext().startService(intent);