当想实现广播接收功能时,因java  是单继承,所以一般一个类都会extends Activity,所以会想到内部类来extends BroadcastReceiver,这中间可能会出现两种异常

1:java.lang.RuntimeException: Unable to instantiate

receiver com.example.progressbar.ProgressBarActivity$mBroadcastReceiver:

java.lang.InstantiationException: com.example.progressbar.ProgressBarActivity$mBroadcastReceiver

这是因为内部类需要写成静态的,即static

static class mBroadcastReceiver extends BroadcastReceiver {

//必须为静态公开的(public static)

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

}

}

2: java.lang.RuntimeException: Unable to instantiate

receiver com.example.progressbar.ProgressBarActivity$mBroadcastReceiver:

java.lang.IllegalAccessException: access to class not allowed

这是因为需要将此类写成public ,若没写默认为protected的,则会出现access to class not allowed

正确的为:

public static class mBroadcastReceiver extends BroadcastReceiver {

//必须为静态公开的(public static)

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

}

}

内部类需要加上$

当然还有另一种方法即实现其一个实例

private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

}

};

然后就是注册和注销

在onCreate() 或onResume()中调用registerBoradcastReceiver()

public void registerBoradcastReceiver() {

IntentFilter myIntentFilter = new IntentFilter();

myIntentFilter.addAction(ACTION_NAME);

// 注册广播

registerReceiver(mBroadcastReceiver, myIntentFilter);

}

@Override

public void onDestroy() {

super.onDestroy();

unregisterReceiver(mBroadcastReceiver);

}

android内部类broadcastreceiver,android 公开静态内部类BroadcastReceiver相关推荐

  1. android 内部类传值,Android Studio中,从内部类

    当你使用一个适配器来添加一些东西到一个列表或数组,您需要提醒的列表,在这种情况下数组,即有一个变化.你调用add函数后,你需要调用adapter.notifyDataSetChanged() 此外,声 ...

  2. Android Service 服务(二)—— BroadcastReceiver

    一. BroadcastReceiver简介 BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用Context.sendBroadcast()发送.Broad ...

  3. Android白眉鹰王之BroadcastReceiver

    传送门 ☞ Android兵器谱 ☞ 转载请注明 ☞ http://blog.csdn.net/leverage_1229 BroadcastReceiver作为Android四大组件之一,不像Act ...

  4. android 屏蔽 广播,Android中使用BroadcastReceiver打开和关闭WIFI

    由于自动化测试需要,我们希望能够简单的控制Android手机的WIFI开和关,而不是通过UI操作的方式.由于每个Android机型的UI都千差万别,所以需要找到一个通用得方式来满足我们的需求. 最开始 ...

  5. Android四大组件:广播机制——BroadcastReceiver

    Android广播机制 1.Android广播机制概述 Android广播分为两个方面:广播发送者和广播接收者,通常情况下,BroadcastReceiver指的就是广播接收者(广播接收器).广播作为 ...

  6. Android内部类监听和多对象监听方法

    工程目录: 一.内部类监听 MainActivity: package com.example.demo_two;import androidx.appcompat.app.AppCompatActi ...

  7. Android 面试(Android 篇)

    Android 面试 安卓篇 一.跨进程通信的几种方式 二.多进程应用使用场景 三.Binder 机制 (进程间的通信) 四.说一说 ANR 五.什么是OOM,如何避免解决 六.内存泄露,内存溢出,内 ...

  8. Android开发之 Android 的基本组件的概述

    Android是一个为组件化而搭建的平台,它的应用是由一些零散的有联系的组件组成,并通过AndroidManifest.xml文件 把它们绑定起来. Android常用的组件有: Activity(活 ...

  9. android 壁纸服务,Android视频壁纸的实现

    视频壁纸属于动态壁纸,所以视频壁纸就可以用Android系统提供的动态壁纸服务来实现.首先先介绍一下在实现过程中会用到的几个类. WallpaperManager Android提供的用于管理壁纸的类 ...

最新文章

  1. 当决定使用 Ubuntu 来开发时
  2. 团队-团队编程项目作业名称-需求分析
  3. SpringBoot高级消-息-RabbitMQ基本概念简介
  4. 牛客21781 牛兄牛弟
  5. s905各种型号的区别_预行式增压缸和直压增压缸有什么区别?
  6. 3分钟快速presentation
  7. 你第1个100万怎么赚的?
  8. Kafka和Unix管道的示例
  9. 对数几率回归(Logistic Regression)
  10. 关于Redis缓存和数据库一致性问题
  11. 【小强推歌】---奥斯卡金曲MP3[下载]
  12. 离散数学西电版复习笔记——第一章:命题逻辑
  13. 华为云下docker安装svn
  14. 【论文笔记】Character-Aware Neural Language Models
  15. 3.2 电话号码对应英语单词
  16. java.net.SocketException和错误:org.apache.ftpserver.FtpServerConfigurationException
  17. 红米android10参数,红米10x5g手机参数 红米10x5g手机参数有哪些
  18. Python+Vue计算机毕业设计社团管理系统7qls9(源码+程序+LW+部署)
  19. 初学Java入门介绍
  20. 组合----隔板法分堆分配

热门文章

  1. Bootstrap-select使用说明
  2. springboot:web开发-Thymeleaf
  3. 用git提交代码到远程仓库遇到的问题
  4. python审批流系统_有赞移动关于权限与审批流程的标准化
  5. python列表存储字符串_Python 基础知识全篇-字符串列表
  6. python61到08使用说明书_python 08 文件操作
  7. java销售额查询_用JSP+JavaBean开发模式实现一个销售额的查询
  8. mysql没加引号导致全表扫描_mysql隐蔽的索引规则导致数据全表扫描
  9. Win11黑夜模式在哪开启 Win11黑夜模式怎么开启
  10. MySQL 中 count(*) 和 count(1) 有什么区别?哪个性能最好?