我想在启动时运行后台服务。所以我创建了广播接收器,并在接收时调用了该后台服务,如下所示。
public class BootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("BroadCast Receiver", "In OnReceive Method");
Intent serviceIntent = new Intent(context , BackGroundService.class);
context.startService(serviceIntent);
}
}
我在清单文件中注册了接收器并获得了 boot_up 权限。
<receiver
android:name=".BootReceiver">
<intent-filter>
<action
android:name="android.intent.action.BOOT_COMPLETED">
</action>
</intent-filter>
</receiver>
允许:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
我的后台服务类
public class BackGroundService extends IntentService {
public BackGroundService() {
super("BackGroundService");
// TODO Auto-generated constructor stub
}
@Override
protected void onHandleIntent(Intent intent) {
// TODO Auto-generated method stub
Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
ConnectivityManager cm = ((ConnectivityManager) BackGroundService.this.getSystemService(Context.CONNECTIVITY_SERVICE));
if (cm == null)
return;
if (cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) {
System.out.println("internet Availble");
// t.cancel();
}else{
System.out.println("internet Not Availble");
}
}
}, 0, 60000*3);
}
}
onReceive 中的日志没有显示在 logcat 中。这意味着 onReceive 没有在 BootUp 上调用。我的代码有什么问题吗?谁可以帮我这个事。提前致谢。