安卓开机启动服务,并且等服务起来再发送消息给该服务

public class BootBroadcastReceiver extends BroadcastReceiver{

      private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

      final String className = "com.example.notify.GameService";

      @Override

      public void onReceive(Context context, Intent intent) {

            ConnectivityManager manager = (ConnectivityManager) context

                        .getSystemService(Context. CONNECTIVITY_SERVICE);

            NetworkInfo gprs = manager

                        .getNetworkInfo(ConnectivityManager. TYPE_MOBILE);

            NetworkInfo wifi = manager

                        .getNetworkInfo(ConnectivityManager. TYPE_WIFI);

             if (!gprs.isConnected() && !wifi.isConnected()) { //网络没开

                   // network closed

            } else { //如果检测到有网络就发送请求确认通知时间

                  Log. e("开机自动服务检测到网络" , "开机自动服务自动启动....." );

                  sendMsg(context);

            }

      }      

      private void sendMsg(Context context) {

             //后边的XXX.class就是要启动的服务

        Intent service = new Intent(context,GameService. class); 

        context.startService(service);

        //sentHttp();

        //beepForAnHour();

        ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);       

        while(true){//等待服务启动后开始发送广播

             if(waitService(mActivityManager)){

                   break;

            }

             try {

                        Thread. sleep(1000);

                  } catch (InterruptedException e) {

                        e.printStackTrace();

                  }

        }

        //启动之后再等1秒,必须保证比 creat迟才行

        try {

                  Thread. sleep(1000);

            } catch (InterruptedException e) {

                  e.printStackTrace();

            }

        //发起另一个通知给监听该消息的监听器,前提是处理该消息的服务需要已经启动

        Intent ntf = new Intent( "com.skymobile.empresses.NTF");

        context.sendBroadcast(ntf);

        Log.e("开机自动服务sendMsg" , "开机自动服务自动启动....." );

      }

      private boolean waitService(ActivityManager mActivityManager) {

            List<RunningServiceInfo> mServiceList = mActivityManager.getRunningServices(40);

             forint i = 0; i < mServiceList.size(); i ++){

                   if( className.equals(mServiceList.get(i). service.getClassName())){

                        Log. e("开机自动服务waitService" , "服务启动" );

                         return true;

                  }

            }

             return false;

      }

}

转载于:https://my.oschina.net/ffse54s/blog/783250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值