Service中注册特殊BroadcastReceiver(系统广播)

A,在activity开启服务:

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        //开启服务

        Intent intent = new Intent(this,ScreenService.class);

        startService(intent);

    }

B,在服务中动态注册广播接受者 ,在服务onDestroy解除Receiver  动态注册不要在AndroidManifest 

public class ScreenService extends Service {

    private ScreenReceiver screenReceiver;

    @Override

    public IBinder onBind(Intent intent) {

        return null;

    }



    @Override

    public void onCreate() {

        super.onCreate();

        // 当服务创建的时候 在这个方法里面去注册广播接收者

        // [1]获取ScreenReceiver实例

        screenReceiver = new ScreenReceiver();

        // [2]创建意图过滤器

        IntentFilter filter = new IntentFilter();

        // [3]添加action

        filter.addAction("android.intent.action.SCREEN_OFF");

        filter.addAction("android.intent.action.SCREEN_ON");

        // [4]注册广播接收者

        registerReceiver(screenReceiver, filter);



    }

    @Override

    public void onDestroy() {

        //当服务销毁的时候 要取消注册广播接收者

        unregisterReceiver(screenReceiver);

        super.onDestroy();

    }

}

C, 在Receiver 接收系统发出来的广播。判断是否开屏幕 

public class ScreenReceiver extends BroadcastReceiver {



    @Override

    public void onReceive(Context context, Intent intent) {

    

        //[1]获取广播的事件类型

        String action = intent.getAction();

        if ("android.intent.action.SCREEN_OFF".equals(action)) {

            System.out.println("屏幕关闭了");

            

        }else if ("android.intent.action.SCREEN_ON".equals(action)) {

            

            System.out.println("说明亮了");

        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值