从BroadcastReceiver类调用activity方法

Jeb*_*bik 6 android inner-classes broadcastreceiver

我知道我可以做一个内部接收器类来调用接收器中的任何方法

但我的主要活动太大了,做了很多事情.所以我需要一个扩展广播接收器但不是内部类的类.并且可以从我的主要活动中调用一个方法.我不知道是否可能,但我的活动是家庭活动和"singleInstance"活动,所以也许有这个细节,有人可以访问我的活动.

如果不可能以任何方式在多个文件中分割一些java代码,那么我的主要代码超过600行.(并且为了获取信息,我已经为我的应用程序的alpha版本提供了19个java文件,因此我尝试将其拆分)

blg*_*101 18

动态创建BroadcastReceiver:

在您的BroadcastReceiver类中定义类成员:

YourMainActivity yourMain = null;  
Run Code Online (Sandbox Code Playgroud)

和方法:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
}  
Run Code Online (Sandbox Code Playgroud)

从您的MainActivity执行:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);
Run Code Online (Sandbox Code Playgroud)

最后,当你的BR.onReceive被解雇时你可以打电话:

yourMain.methodOfMainActivity();
Run Code Online (Sandbox Code Playgroud)