Вы можете инкапсулировать процесс, сделав intentFilter
членом класса GpsReceiverHelper
и удалив ключевое слово static
из recieverRegister
и receiverUnregister
.
.
public class GpsReceiverHelper {
private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Receiver code goes here
}
};
// Called from a different Class when I need to Register the Receiver
public void receiverRegister(Context context) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.location.PROVIDERS_CHANGED");
context.registerReceiver(myReceiver, intentFilter);
}
// Called from a different Class when I need to UN-Register the Receiver
public void receiverUnregister(Context context) {
context.unregisterReceiver(myReceiver);
}
}
Приведенный выше код теперь является настоящим классом Helper, а не просто служебным классом с кучей статических методов.
Пример использования:
class TestActivity extends Activity{
private GpsRecieverHelper helper = new GpsRecieverHelper();
public void onStart(){
helper.receiverRegister(this);
}
public void onStop(){
helper.receiverUnregister(this);
}
}
Если вам нужно повторно использовать тот же экземпляр помощника, вы можете использовать публичное статическое ключевое слово:
public static GpsRecieverHelper helper = new GpsRecieverHelper();
Помощник выше теперь доступен в каждом классе, например <NameOfTheCLass>.helper
.
Отказ от ответственности: я никогда не проверял код в реальной IDE.