【问题标题】:Unregister BroadcastReceiver which extends a class注销扩展类的 BroadcastReceiver
【发布时间】:2012-08-10 13:13:07
【问题描述】:

我有一门课如下:

public class FYPSmsReceiverBroadcast extends BroadcastReceiver

我需要取消注册接收器,因为在我收到 SMS 消息后应用程序存在后出现强制关闭错误。 (表示某些东西仍在侦听短信但由于应用程序已关闭而无法访问特定活动;该错误似乎仅在收到 1 个文本后发生,第二个文本似乎不会产生强制关闭错误)

有许多类似的问题,但没有一个可以帮助我采用的方法。我尝试添加如下 onPause:

 public void onPause() {


        unregisterReceiver(FYPSmsReceiverBroadcast);
    }

但这会导致eclipse中出现以下错误:'FYPReceiverBroadcast cannot be resolve to a variable'

在扩展广播接收器的类的 onReceive 方法中,我调用了: FYPSpeakerActivity.speakSMSfrom();

调用另一个使用文本到语音的类 - 此行似乎是在收到 SMS 时被调用的(尽管应用程序已关闭),并创建强制关闭错误。

谁能给点建议?

【问题讨论】:

  • 您是否有一个名为 FYPReceiverBroadcast 的对象,它是 FYPSmsReceiverBroadcast 类的一个实例?如果是这样,它是否被声明为类变量?它应该可以工作。
  • 不,我不创建对象。

标签: android sms broadcastreceiver extends


【解决方案1】:

FYPReceiverBroadcastclass。你需要传递一个object,这里是一个例子:

FYPReceiverBroadcast myFYPReceiverBroadcast = new FYPReceiverBroadcast(...);

...

public void onPause() {
     unregisterReceiver(myFYPReceiverBroadcast);
}

这是一个基本的编程概念,我建议你阅读以下文章来了解其中的区别:

对象是相关状态的软件包,并且 行为。类是对象的蓝图或原型 已创建。

http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/

【讨论】:

  • 他的问题中没有任何内容表明 FYPReceiverBroadcast 是一个类,也没有表明他遵循将该名称归类为类名的命名约定,而不是对象名称。
  • 你说得对,我不能 100% 确定他发布的信息,但他有名为 FYPSmsReceiverBroadcastFYPSpeakerActivity 的课程,所以我猜 FYPReceiverBroadcast 也是一个课程。
  • 是的,它是一个类。我不创建对象。那么我必须创建这个类的一个对象,然后才能成功注销它吗? (我对上述帖子的理解)应用程序按设计的记录工作,强制关闭错误是我想解决的问题。
  • 这意味着他正在尝试传递一个名为“FYPReceiverBroadcast”的对象(编译器对此没有任何反对)——这并不意味着他有一个名为“FYPReceiverBroadcast”的类并且他正在尝试使用它而不是一个实例。我同意这不是正确的语法,但他问的是为什么他的代码没有运行,而不是他如何改进他的语法。编辑:nvm。
  • @Buffalo 其实他只是说FYPReceiverBroadcast 是一个类。顺便说一句,'xxx 无法解析为变量'是编译时错误,而不是运行时错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2013-05-13
相关资源
最近更新 更多