由于某种原因,不会调用onReceive方法
我没有应用任何过滤器或任何东西,
这是班级:
import java.util.ArrayList;import java.util.Calendar;import androID.content.broadcastReceiver;import androID.content.Intent;import androID.content.Context;import androID.util.Log;public class RegisterListener extends broadcastReceiver {private final int DELAY_TIME = 5;private int m_seconds = 0;private int m_minutes = 0;private int m_hours = 0;static ArrayList<broadcastReceiverListener> Listeners = new ArrayList<broadcastReceiverListener>();@OverrIDepublic voID onReceive(Context context, Intent intent) { Log.d("ScreenReceiver Action:",intent.getAction()); Calendar c = Calendar.getInstance(); m_seconds = c.get(Calendar.SECOND); m_minutes = c.get(Calendar.MINUTE); m_hours = c.get(Calendar.HOUR); for (broadcastReceiverListener Listener:Listeners){ Listener.onReceive(m_hours, m_minutes, m_seconds); }}public static voID addbroadcastReceiveListener (broadcastReceiverListener Listener){ if(!Listeners.contains(Listener)){ Listeners.add(Listener); }}public voID removebroadcastReceiveListener (broadcastReceiverListener Listener){ if(Listeners.contains(Listener)){ Listeners.remove(Listener); }}
这是清单中的声明(应用程序的子代)
<receiver androID:name=".RegisterListener"></receiver>
编辑:
这是我试图添加的过滤器(在onReceive()内)
IntentFilter filter = new IntentFilter(Intent.ACTION_USER_PRESENT); broadcastReceiver mReceiver = new RegisterListener(); registerReceiver(mReceiver, filter);
我收到一个错误:
The method registerReceiver(broadcastReceiver, IntentFilter) is undefined for the type RegisterListener
解决方法:
如果您总是想听ACTION_USER_PRESENT,请尝试:
<receiver androID:name=".RegisterListener"> <intent-filter> <action androID:name="androID.intent.action.USER_PRESENT" /> </intent-filter></receiver>
说明
The method registerReceiver(broadcastReceiver, IntentFilter) is undefined for the type RegisterListener
您必须将registerReceiver()与Context一起使用,例如context.registerReceiver(…).但:
This is the filter i trIEd to add (insIDe the onReceive() )
在onReceive()中注册接收器是没有意义的,因为onReceive()在注册接收器之前不会运行…所以它永远不会发生.您可以将此代码放在Activity中的onCreate()中,如下所示:
IntentFilter filter = new IntentFilter(Intent.ACTION_USER_PRESENT);broadcastReceiver mReceiver = new RegisterListener();registerReceiver(mReceiver, filter);
这只会在您的应用已经投放时监听ACTION_USER_PRESENT.
总结以上是内存溢出为你收集整理的为什么onReceive在Android中不被称为扩展BroadcastReceiver全部内容,希望文章能够帮你解决为什么onReceive在Android中不被称为扩展BroadcastReceiver所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)