0

我想在启动时运行后台服务。所以我创建了广播接收器,并在接收时调用了该后台服务,如下所示。

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 上调用。我的代码有什么问题吗?谁可以帮我这个事。提前致谢。

4

0 回答 0