Как проверить, было ли в моем приложении настроена оптимизация батареи на Android?

Я не уверен, какое значение должно быть, если в столбце D вы найдете String «set_path» или «stop», но если они всегда одинаковы (т.е. «a», если столбец D = «set_path» и «a», stop ", если столбец D =" стоп "), вы можете достичь желаемых результатов по следующей формуле:

=IF(AND(D2<>"set_path",D2<>"stop"),COUNTIF($D$1:D2,"is_null")+COUNTIF($D$1:D2,"equals"),IF(D2="set_path","a",IF(D2="stop","stop","")))

UPDATE:

Использование VBA вы можете оставить содержимое ячейки так, как они есть, не переписав их формулой, используя следующий код:

Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set the worksheet you are working with, amend as required.
Dim LastRow As Long, i As Long

LastRow = ws.Cells(ws.Rows.Count, "D").End(xlUp).Row
'get the last row with data on Column D

For i = 2 To LastRow
    If ws.Cells(i, "B").Value = "" Then 'if cell is empty add formula
        ws.Cells(i, "B").FormulaR1C1 = "=COUNTIF(R1C4:RC[2],""is_null"")+COUNTIF(R1C4:RC[2],""equals"")"
    End If
Next i

End Sub

Второе обновление:

Теперь я адаптировал формулу к увеличивайте буквы на единицу, если в столбце D найдено «set_path». Пожалуйста, имейте в виду, что это будет происходить от AZ, а затем оно начнет перемещаться по символам в соответствии с таблицей ASCII, поэтому вам может потребоваться изменить это, если вы хотите изменить поведение ):

=IF(AND(D2<>"set_path",D2<>"stop"),COUNTIF($D$1:D2,"is_null")+COUNTIF($D$1:D2,"equals"),IF(D2="set_path",IFERROR(CHAR(COUNTIF($D$2:D2,"set_path")+64),""),IF(D2="stop","stop","")))

3
задан Isaac 19 January 2019 в 05:14
поделиться

1 ответ

в нативном Android, вы можете использовать PowerManager.isIgnoringBatteryOptimizations() логическое значение, чтобы определить, игнорирует ли приложение уже оптимизации, т. Е. Находится ли приложение в белом списке.

 @ReactMethod public void isAppIgnoringBatteryOptimization(Callback callback){
    String packageName = getReactApplicationContext().getPackageName();
    PowerManager pm = (PowerManager) getReactApplicationContext().getSystemService(Context.POWER_SERVICE);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
      callback.invoke(pm.isIgnoringBatteryOptimizations(packageName));
    }else{
      callback.invoke(true);
    }

, а затем в js

 isAppIgnoringBatteryOptimization: function(callback) {
    jobModule.isAppIgnoringBatteryOptimization(ignoringOptimization => {
      if (ignoringOptimization != null) {
        callback("", ignoringOptimization);
      } else {
        callback("error", null);
      }
    });
  }

https://github.com/vikeri/react-native-background-job/ - хорошая библиотека, которая видит все крайние случаи фонового выполнения

Если вы хотите попросить пользователя отключить его - попросите

Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS разрешение

из

https://developer.android. ком / ссылка / Android / Провайдер / Настройки # ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS

0
ответ дан kkarakk 19 January 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: