Llamar a un método de actividad de una clase BroadcastReceiver

Sé que puedo hacer una clase de receptor interno para llamar a cualquier método desde mi receptor

Pero mi actividad principal es demasiado grande y hace muchas cosas. Entonces necesitaré una clase que amplíe el receptor de difusión pero que no sea una clase interna. Y puede llamar a un método de mi actividad principal. No sé si es posible, pero mi actividad es una actividad en el hogar y una actividad de “única instancia”, así que tal vez con este detalle alguien tenga acceso a mi actividad.

Si es imposible dividir código Java en varios archivos, mi principal tiene más de 600 líneas. (y para información, ya tengo 19 archivos java para una versión alfa de mis aplicaciones, así que he intentado dividirlo)

Cree el BroadcastReceiver dinámicamente:

En tu clase BroadcastReceiver, define el miembro de la clase:

YourMainActivity yourMain = null; 

y método:

 setMainActivityHandler(YourMainActivity main){ yourMain = main; } 

de su actividad principal hacer:

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

finalmente, cuando se active tu BR.onReceive, puedes llamar a:

 yourMain.methodOfMainActivity();