В соответствии с найденной документацией here, BackgroundPowerSaver должен быть членом экземпляра в вашем классе Application.Altbeacon BackgroundPowerSaver свойство
import org.altbeacon.beacon.powersave.BackgroundPowerSaver;
public class MyApplication extends Application {
private BackgroundPowerSaver backgroundPowerSaver;
public void onCreate() {
super.onCreate();
backgroundPowerSaver = new BackgroundPowerSaver(this);
}
}
Это, конечно, создает Field can be local
предупреждение.
Мой вопрос: почему он должен быть членом экземпляра?
С его помощью registers on the Application приложение добавляет BackgroundPowerSaver к своему mActivityLifecycleCallbacks
ArrayList. (См. Исходный код приложения для этого)
Если я не ошибаюсь, это должно означать, что приложение сохраняет ссылку на BackgroundPowerSaver и не должно быть GC'ed.
Итак, не должно ли оно работать, если вы это сделаете?
public void onCreate() {
super.onCreate();
new BackgroundPowerSaver(this);
}
Но разве приложение не ссылается на него в массиве ArrayList 'mActivityLifecycleCallbacks'? – SnyersK
Спасибо за разъяснение! – SnyersK