zoukankan      html  css  js  c++  java
  • android91 代码注册广播接收者

    Activity:

    package com.itheima.register;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.content.Intent;
    import android.view.Menu;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        private Intent intent;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            intent = new Intent(this, RegisterService.class);
        }
    
    
        public void start(View v){
            startService(intent);
        }
        public void stop(View v){
            stopService(intent);
        }
        
    }
    
    /*
     服务清单文件注册:
    <service android:name="com.itheima.register.RegisterService"></service>*/

    service:

    package com.itheima.register;
    
    import android.app.Service;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.IBinder;
    
    public class RegisterService extends Service {
    
        private ScreenReceiver receiver;
        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public void onCreate() {
            super.onCreate();
            //1.创建广播接收者对象
            receiver = new ScreenReceiver();
            //2.创建intent-filter对象
            IntentFilter filter = new IntentFilter();
            filter.addAction(Intent.ACTION_SCREEN_OFF);//屏幕锁屏
            filter.addAction(Intent.ACTION_SCREEN_ON);//屏幕解锁
            
            //3.注册广播接收者
            registerReceiver(receiver, filter);
            
        }
        @Override
        public void onDestroy() {
            super.onDestroy();
            //解除注册
            unregisterReceiver(receiver);
        }
    }

    广播接收者:

    package com.itheima.register;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class ScreenReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            String action = intent.getAction();
            if(Intent.ACTION_SCREEN_OFF.equals(action)){
                System.out.println("屏幕关闭");
            }
            else if(Intent.ACTION_SCREEN_ON.equals(action)){
                System.out.println("屏幕打开");
            }
        }
    
    }

    #使用代码配置广播接收者,但是服务只能在清单文件注册不能代码注册。
    * 可以使用清单文件注册
    * 广播一旦发出,系统就会去所有清单文件中寻找,哪个广播接收者的action和广播的action是匹配的,如果找到了,就把该广播接收者的进程启动起来,广播接受者一旦通过清单文件部署在手机就永远生效。
    * 可以使用代码注册
    * 需要使用广播接收者时,执行注册的代码,不需要时,执行解除注册的代码

    ###特殊的广播接收者
    * 安卓中有一些广播接收者,必须使用代码注册,清单文件注册是无效的
    1. 屏幕锁屏和解锁,用的很频繁,因此接收这些广播的接受者不用一直监听。
    2. 电量改变

  • 相关阅读:
    一个好玩的代码生成工具
    正式决定了...
    小评几种O/R Mapping工具
    本期期刊主题:ASP.NET技术与JavaScript技巧,包括控件等
    vs.net2005单元测试的私有方法测试
    如何为一个instance配置多个监听,并且实现Client Load Balancing和Client Load Balancing
    编译告警解决记录
    SourceInsight宏开发
    map
    挖掘G13金矿让150M手机内存变成250M
  • 原文地址:https://www.cnblogs.com/yaowen/p/4954435.html
Copyright © 2011-2022 走看看