Android广播接收器,不接收?
我的Android广播接收器,不接收?,android,broadcastreceiver,Android,Broadcastreceiver,我的BroadcastReceiver有问题,从未被解雇。以下是接收器的定义: public class UIUpdater extends BroadcastReceiver { private final Handler handler; public UIUpdater(Handler handler) { this.handler = handler; } @Override
BroadcastReceiver
有问题,从未被解雇。以下是接收器的定义:
public class UIUpdater extends BroadcastReceiver {
private final Handler handler;
public UIUpdater(Handler handler)
{
this.handler = handler;
}
@Override
public void onReceive(final Context context, final Intent intent)
{
String action = intent.getAction();
Log.i("MAIN", " >>> ACTION <<< : " + action);
if(action.equalsIgnoreCase("PROGRESSINIT"))
{
int size = intent.getIntExtra("PROGRESSSIZE", 0);
updatePopulateProgressSize(size);
}
handler.post(new Runnable(){
@Override
public void run(){
updatePopulateProgress(intent.getIntExtra("PROGRESS", 0));
}
});
}
}
哦,还有常数:
public static final String BC_POPULATE = "com.goosesys.gaggle.populate";
public static final String BC_PROGRESSINIT = "PROGRESSINIT";
public static final String BC_PROGRESSSIZE = "PROGRESSSIZE";
public static final String BC_PROGRESSINC = "PROGRESSINC";
问题是,我已经完成了每一个部分,一切都很好,没有错误,没有泄漏,没有问题。只不过从来不会弹出接收的onReceive
:
我是新来的,请温柔点;)
提前干杯 如果您查看LogCat,您会发现一个警告或错误,堆栈跟踪抱怨Android无法创建
UIUpdater
的实例。这有两个原因:
static
内部类,因此框架无法创建它的实例(实例只能由外部Main
类实例创建)此外,对于这样的常规系统广播来说,这不是一个好的用例。请使用进程内事件总线(
LocalBroadcastManager
、Square的Otto、greenrobot的EventBus等)。这将提高性能(没有IPC),提高安全性(现在,任何人都可以攻击你的接收器),并可能简化你的代码(如果你使用Otto或EventBus)。如果你查看LogCat,你会发现警告或错误,堆栈跟踪抱怨Android无法创建UIUpdater
的实例。这有两个原因:
static
内部类,因此框架无法创建它的实例(实例只能由外部Main
类实例创建)此外,对于这样的常规系统广播来说,这不是一个好的用例。请使用进程内事件总线(
LocalBroadcastManager
、Square的Otto、greenrobot的EventBus等)。这将提高性能(没有IPC),提高安全性(现在,任何人都可以攻击你的接收器),并可能简化你的代码(如果你使用Otto或EventBus)。如果你查看LogCat,你会发现警告或错误,堆栈跟踪抱怨Android无法创建UIUpdater
的实例。这有两个原因:
static
内部类,因此框架无法创建它的实例(实例只能由外部Main
类实例创建)此外,对于这样的常规系统广播来说,这不是一个好的用例。请使用进程内事件总线(
LocalBroadcastManager
、Square的Otto、greenrobot的EventBus等)。这将提高性能(没有IPC),提高安全性(现在,任何人都可以攻击你的接收器),并可能简化你的代码(如果你使用Otto或EventBus)。如果你查看LogCat,你会发现警告或错误,堆栈跟踪抱怨Android无法创建UIUpdater
的实例。这有两个原因:
static
内部类,因此框架无法创建它的实例(实例只能由外部Main
类实例创建)此外,对于这样的常规系统广播来说,这不是一个好的用例。请使用进程内事件总线(
LocalBroadcastManager
、Square的Otto、greenrobot的EventBus等)。这将提高性能(没有IPC),提高安全性(现在,任何人都可以攻击你的接收器),并可能简化你的代码(如果你使用Otto或EventBus)。你需要在某个地方注册你的接收器。通常在onCreate方法中,我会这样做:
registerReceiver(new UIUpdater(mhandler), new IntentFilter());
你需要在某处注册你的接收者。通常在onCreate方法中,我会这样做:
registerReceiver(new UIUpdater(mhandler), new IntentFilter());
你需要在某处注册你的接收者。通常在onCreate方法中,我会这样做:
registerReceiver(new UIUpdater(mhandler), new IntentFilter());
你需要在某处注册你的接收者。通常在onCreate方法中,我会这样做:
registerReceiver(new UIUpdater(mhandler), new IntentFilter());
谢谢你的提示,马克。非常感谢。黑客攻击并不困扰我,因为它是一个公司交付应用程序,不向所有人开放,但由于您的评论,我决定继续使用事件总线。准确地说,奥托。非常感谢!谢谢“绿色机器人的活动巴士”。谢谢你的提示,马克。非常感谢。黑客攻击并不困扰我,因为它是一个公司交付应用程序,不向所有人开放,但由于您的评论,我决定继续使用事件总线。准确地说,奥托。非常感谢!谢谢“绿色机器人的活动巴士”。谢谢你的提示,马克。非常感谢。黑客攻击并不困扰我,因为它是一个公司交付应用程序,不向所有人开放,但由于您的评论,我决定继续使用事件总线。准确地说,奥托。非常感谢!谢谢“绿色机器人的活动巴士”。谢谢你的提示,马克。非常感谢。黑客攻击并不困扰我,因为它是一个公司交付应用程序,不向所有人开放,但由于您的评论,我决定继续使用事件总线。准确地说,奥托。非常感谢!感谢“绿色机器人的活动巴士”。