接收一次性广播,开启服务永久监听

简介:   接收一次性广播,开启服务永久监听   出处:http://blog.csdn.net/djy1992/article/details/9629741 需代码留邮箱 如果现在系统只发送一个一次性广播(比如开机启动), 接收器只识别一次,因为系统不继续发送该广播了;...
 

接收一次性广播,开启服务永久监听

 

出处:http://blog.csdn.net/djy1992/article/details/9629741 需代码留邮箱

如果现在系统只发送一个一次性广播(比如开机启动),

接收器只识别一次,因为系统不继续发送该广播了;

现在是要在这种情况下开启服务(开机启动服务),

而且要连续的监听变化(如:网络改变时,该服务启动),该怎么处理?

 

第一步:在manifest注册广播接收器,

 <receiver android:name=".service.ClientUpdateReceiver">
        <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED"/>// 开机启动发送的广播命令 

     <category android:name="android.intent.category.HOME"/>
   </intent-filter>
 </receiver>

第二步:在代码中编写广播接收器,

public class ClientUpdateReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent)
    {

            Intent i = new Intent();
            i.setAction("zte.com.market.service");
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            context.startService(i);
    }

}

第三步:编写service类,其中需要另外编写一个广播接收器,方便实时接受广播, 

public class UpdateService extends Service
{
  private ConnectivityManager connectivityManager;
  private NetworkInfo info;

  private BroadcastReceiver mReceiver = new BroadcastReceiver() {

      @Override
      public void onReceive(Context context, Intent intent) {
          String action = intent.getAction();
          if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
              Log.d("Jeny", "网络状态已经改变");
              connectivityManager = (ConnectivityManager)      
                                       getSystemService(Context.CONNECTIVITY_SERVICE);
              info = connectivityManager.getActiveNetworkInfo();  
              if(info != null && info.isAvailable()) {
                  String name = info.getTypeName();
                  Log.d("Jeny", "当前网络名称:" + name);
                  Intent i = new Intent();
                  i.setAction("zte.com.market.service");
                  i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                  context.startService(i);// 开启服务
           } else {
                  Log.d("Jeny", "没有可用网络");
              }
          }
      }
  };
    
    @Override
    public IBinder onBind(Intent arg0)
    {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onDestroy()
    {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.v("Jeny", "[UpdateService]...onDestroy");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId)
    {
        // TODO Auto-generated method stub
              
        ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        Log.v("Jeny", "mobileInfo.isConnected()------->"+mobileInfo.isConnected()+"   wifiInfo.isConnected()---------->"+wifiInfo.isConnected());
        if(mobileInfo.isConnected() || wifiInfo.isConnected()){
            
         }
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate()
    {
        // TODO Auto-generated method stub
        super.onCreate();
        IntentFilter mFilter = new IntentFilter();
        mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
        registerReceiver(mReceiver, mFilter);// 开机启动时首次开启服务后注册接收器
     }

}

 

到此结束!

相关文章
|
传感器 芯片
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
毕业设计 基于51单片机霍尔电机转速测量温度PWM调速设计
365 0
|
jenkins 持续交付
Manage Jenkins管理界面提示“依赖错误: 部分插件由于缺少依赖无法加载...“问题解决办法
Manage Jenkins管理界面提示“依赖错误: 部分插件由于缺少依赖无法加载...“问题解决办法
1594 0
Manage Jenkins管理界面提示“依赖错误: 部分插件由于缺少依赖无法加载...“问题解决办法
|
Ubuntu 测试技术 Linux
warp工具
本文档介绍了在Ubuntu 20.04上使用Cloudflare Warp代理网络以解决访问限制问题。
900 0
|
JavaScript Java 开发工具
天猫精灵语音技能开发
天猫精灵语音技能开发 https://aligenie.com/
437 0
天猫精灵语音技能开发
|
缓存 JavaScript 前端开发
网站前端优化的技术
① 浏览器访问优化: - 减少HTTP请求数量:合并CSS、合并JavaScript、合并图片(CSS Sprite) - 使用浏览器缓存:通过设置HTTP响应头中的Cache-Control和Expires属性,将CSS、JavaScript、图片等在浏览器中缓存,当这些静态资源需要更新时,可以更...
670 0
|
2天前
|
人工智能 JavaScript Linux
【Claude Code 全攻略】终端AI编程助手从入门到进阶(2026最新版)
Claude Code是Anthropic推出的终端原生AI编程助手,支持40+语言、200k超长上下文,无需切换IDE即可实现代码生成、调试、项目导航与自动化任务。本文详解其安装配置、四大核心功能及进阶技巧,助你全面提升开发效率,搭配GitHub Copilot使用更佳。
|
4天前
|
存储 人工智能 自然语言处理
OpenSpec技术规范+实例应用
OpenSpec 是面向 AI 智能体的轻量级规范驱动开发框架,通过“提案-审查-实施-归档”工作流,解决 AI 编程中的需求偏移与不可预测性问题。它以机器可读的规范为“单一真相源”,将模糊提示转化为可落地的工程实践,助力开发者高效构建稳定、可审计的生产级系统,实现从“凭感觉聊天”到“按规范开发”的跃迁。
757 12
|
4天前
|
消息中间件 人工智能 Kubernetes
阿里云云原生应用平台岗位急招,加入我们,打造 AI 最强基础设施
云原生应用平台作为中国最大云计算公司的基石,现全面转向 AI,打造 AI 时代最强基础设施。寻找热爱技术、具备工程极致追求的架构师、极客与算法专家,共同重构计算、定义未来。杭州、北京、深圳、上海热招中,让我们一起在云端,重构 AI 的未来。