特殊广播接收者

比如操作特别频繁的广播事件 屏幕的锁屏和解锁 电池电量的变化 这样的广播接收者在清单文件里面注册无效

import android.os.Bundle;
import android.app.Activity;
import android.content.IntentFilter;
import android.view.Menu;

public class MainActivity extends Activity {

    private ScreenReceiver screenReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /* <receiver android:name="com.itheima.screen.ScreenReceiver">
         <intent-filter >
             <action android:name="android.intent.action.SCREEN_OFF"/>
             <action android:name="android.intent.action.SCREEN_ON"/>
         </intent-filter>
     </receiver>*/

        //[1]动态的去注册屏幕解锁和锁屏的广播
        screenReceiver = new ScreenReceiver();
        //[2]创建intent-filter对象
        IntentFilter filter = new IntentFilter();
        //[3]添加要注册的action
        filter.addAction("android.intent.action.SCREEN_OFF");
        filter.addAction("android.intent.action.SCREEN_ON");
        //[4]注册广播接收者
        this.registerReceiver(screenReceiver, filter);

    }

    @Override
    protected void onDestroy() {
        //当activity销毁的时候  取消注册广播接收者
        unregisterReceiver(screenReceiver);

        super.onDestroy();
    }

}
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) {

        //[1]获取到当前广播的事件类型
        String action = intent.getAction();
        //[2]对当前广播事件类型做一个判断

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

            System.out.println("屏幕锁屏了");
        }else if ("android.intent.action.SCREEN_ON".equals(action)) {

            System.out.println("说明屏幕解锁了~~~");
        }

    }

}

当activity销毁的时候  取消注册广播接收者

09-08 07:25:42.239: E/ActivityThread(2173): Activity com.itheima.screen.MainActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to

unregisterReceiver()?

时间: 2024-10-22 02:26:45

特殊广播接收者的相关文章

广播接收者案例_ip拨号器

(1)定义一个类继承BroadCastReceiver public class OutGoingCallReceiver extends BroadcastReceiver { //当接收到外拨电话的事件的时候回执行这个方法 @Override public void onReceive(Context context, Intent intent) { //[0]获取到我们保存的ip号码 SharedPreferences sp = context.getSharedPreferences(

手机卫士03_手势动作_广播接收者应用

//在控件上面按ctrl+1 可以抽取样式 1,设置向导界面的细节问题 1.1设置向导界面的跳转的时候要记得finsh(),把当前界面从任务栈中移除. 在设置向导界面的任何一个界面返回都应该返回home界面 1.2 Activity界面切换的动画 目标:本界面向左移出了屏幕,下一个界面从右边移出来(类似翻页效果) ovreridePendingTransition(进入动画文件资源id,退出动画文件资源id); //这个方法在startActivity,或finsh()后调用,可以更改动画变化的

[android] 代码注册广播接收者&amp;利用广播调用服务的方法

利用广播调用服务里面的方法,间接的方式调用服务内部的方法,与现实中差不多,请媒体曝光 主界面里面 在界面创建的时候开启一下服务普通的startService()方法 发送一条广播出去 获取Intent对象,通过new出来 调用Intent对象的setAction()方法,参数:一般就是包名 调用sendBroadcast(intebt)方法,发送广播,参数:Intent对象 服务里面 新建一个MyService类继承系统的Service类 添加一个自定义的服务的方法callServiceMeth

BroadcastReceiver广播接收者(四)——本地广播LocalBroadcastManager以及在onReceive()中弹出Dialog

MainActivity如下: package cc.cv; import android.os.Bundle; import android.support.v4.content.LocalBroadcastManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import an

BroadcastReceiver广播接收者(二)——利用AndroidManifest.xml注册广播接收者

MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; import android.content.Intent; /** * Demo描述: * 利用AndroidManifest.xml注册广播接收者 */ public class MainActivity extends Activity { @Override protected void onC

Android 广播接收者

安卓实现广播有两种方式 方式1:动态注册 方式2:配置文件注册 下面我们来实现方式1,动态注册 首先我们来定义一个接收者,继承BroadcastReceiver ,并且重写onReceive方法,当指定的广播发出,系统自动调用onReceive方法. public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //得到广播

广播接收者

一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据: 广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图,通过这个语

Android入门:广播发送者与广播接收者

参考: Android入门:广播发送者与广播接收者 - xiazdong - CSDN博客http://blog.csdn.net/xiazdong/article/details/7768807 一.广播发送者&广播接收者介绍 1.广播接收者 广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写: public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据:

android 49 广播接收者中启动其他组件

main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id