Android:广播接收器和后台服务

Android:广播接收器和后台服务,android,Android,我想实现一个后台服务和一个广播接收器来检查我的设备上是否有互联网,并在应用程序关闭时发出http请求,所有这些都来自我的活动。为了做到这一点,我检查了这个网站上的主题,但我不明白一些东西。 我不明白怎么做,广播接收器中的OnReceive()函数是否在每次连接改变时都被调用?或者当我在活动中注册接收者时?有人能告诉我更多关于我需要做什么来实现我想要的吗?我已经创建了我的广播接收器,但我对其他部分有点迷茫。首先,感谢您在应用程序范围内创建后台服务,您可以使用处理程序类,如果它不在应用程序gcmta

我想实现一个后台服务和一个广播接收器来检查我的设备上是否有互联网,并在应用程序关闭时发出http请求,所有这些都来自我的活动。为了做到这一点,我检查了这个网站上的主题,但我不明白一些东西。
我不明白怎么做,广播接收器中的OnReceive()函数是否在每次连接改变时都被调用?或者当我在活动中注册接收者时?有人能告诉我更多关于我需要做什么来实现我想要的吗?我已经创建了我的广播接收器,但我对其他部分有点迷茫。首先,感谢您在应用程序范围内创建后台服务,您可以使用处理程序类,如果它不在应用程序gcmtaskmanager或JobScheduler的范围内,则可以使用它

即使在应用程序关闭时发出http请求,所有这些都来自我的活动

要做到这一点,请使用JobScheduler或GCMTaskManager,即使在应用程序关闭时,它也会调用您的http请求

有人能告诉我更多关于我需要做什么来实现我想要的吗

假设您使用的是GCMTaskManager,您将首先初始化服务

 mGcmNetworkManager = GcmNetworkManager.getInstance(this);
然后安排任务在一定的时间间隔内运行

 PeriodicTask task = new PeriodicTask.Builder()
            .setService(MyTaskService.class)
            .setTag(TASK_TAG_WIFI)
            .setPeriod(30L)
            .build();

    mGcmNetworkManager.schedule(task);
然后听听这些事件

 mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(MyTaskService.ACTION_DONE)) {
                String tag = intent.getStringExtra(MyTaskService.EXTRA_TAG);
                int result = intent.getIntExtra(MyTaskService.EXTRA_RESULT, -1);

                String msg = String.format("DONE: %s (%d)", tag, result);
                Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
            }
        }
    };
广播接收器中的OnReceive()函数是否在每次连接更改时调用

这取决于服务是否为侦听器生成要侦听的事件,如果是,则调用onReceive

我建议您通读这篇关于调度程序的文章 希望对您有所帮助。

可能的副本