2016-02-05 4 views
2

Я заметил, что когда режим экономии батареи включен (пользователем или автоматически) в Android 5.x - ProgressBars в приложении просто исчезает.Пробег пропадает в режиме экономии заряда аккумулятора (Android 5.x)?

Без анимации, без статического виджета прогресса - просто пустое место.

Как предотвратить это? Я понимаю, когда Battery Saver отключает некоторые системные анимации, но progressbars на самом деле является важной частью пользовательского интерфейса приложения.

Только в случае - код, который реализует ProgressBar Layout:

<ProgressBar 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/refresh_bar" 
    android:layout_alignParentTop="true" 
    android:indeterminate="true" 
    android:visibility="gone" 
    android:layout_marginTop="@dimen/progress_bar_top_margin" /> 

И как это реализовано в моем классе фрагмент:

public class FeedFragment extends Fragment { 
    ... 
    // Progressbar to show refreshing state 
    private ProgressBar mRefreshBar; 
    ... 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      View v = inflater.inflate(R.layout.fragment_feed, container, false);  
      ... 
      // Initialize and locate Refreshing progress bar 
      mRefreshBar = (ProgressBar) v.findViewById(R.id.refresh_bar); 
      ... 
      mRefreshBar.setVisibility(View.VISIBLE); 
      ... 
    } 
    ... 
} 

Кроме того, я перед этой проблемой со всеми барами прогресса в применении, не только с этим. Когда режим экономии батареи отключен - все работает нормально.

ответ

2

Когда включен режим экономии батареи, каждое приложение на устройстве имеет такую ​​же проблему.

Поскольку режим экономии заряда батареи продлевает срок службы батареи, чтобы вы могли использовать телефон, пока у вас не будет возможности зарядить его. Это происходит с каждым приложением. Так что не волнуйся.

Как предотвратить это?

Отключив режим энергосбережения в настройках и перезагрузив устройство. Или вы можете запросить у пользователя permission, чтобы отключить его.

+0

Хорошо, я понял. Но с учетом этого, как уведомить пользователя о чем-то, загружается? У меня есть ListView с бесконечным прокруткой (загрузка данных автоматически, когда пользователи прокручиваются до последнего элемента), а когда нет панели прогресса - похоже, что список только что дошел до конца. – udenfox

+0

вы можете использовать прогресс + текст (Загрузка ...) или что-то еще. когда Battery saver работает с пользователем, который может видеть текст –

+0

, вы также можете проверить приложение gmail android, что они сделали, когда Battery saver включен на –

1

Как предотвратить это?

ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS позволяет запросить у пользователя, чтобы ваше приложение игнорировало оптимизацию батареи, я не пробовал, но это кажется законным.

Смежные вопросы