Итак, есть ли способ сделать это с помощью функции из SDK?
blockquote>Нет, извините.
Было бы возможно прослушивать события «запуск / завершение деятельности» с каким-то приемником на конкретное приложение (мой) и отслеживать историю стека?
blockquote>Вы можете использовать
registerActivityLifecycleCallbacks()
наApplication
, если вы собираетесь поддерживать API уровня 14 и выше (ака, Android 4.0 +).
Приводит oObject
к логическому значению. Если это было false (например, 0, null
, undefined
и т. Д.), Это будет false
, в противном случае true
.
!oObject //Inverted boolean
!!oObject //Non inverted boolean so true boolean representation
Итак, !!
- это не оператор, это просто оператор !
дважды.
Пример из реального мира «Проверка версии IE»:
let isIE8 = false;
isIE8 = !! navigator.userAgent.match(/MSIE 8.0/);
console.log(isIE8); // returns true or false
Если вы ⇒
console.log(navigator.userAgent.match(/MSIE 8.0/));
// returns either an Array or null
но если вы ⇒
console.log(!!navigator.userAgent.match(/MSIE 8.0/));
// returns either true or false
Я подозреваю, что это пережиток C ++, где люди переопределяют! оператор, но не оператор bool.
Таким образом, чтобы получить отрицательный (или положительный) ответ в этом случае, вам сначала нужно использовать! оператор, чтобы получить логическое значение, но если вы хотите проверить положительный случай, используйте !!.
Это просто логический оператор NOT, дважды - он используется для преобразования чего-либо в логическое значение, например:
true === !!10
false === !!0
Кажется, что оператор !!
приводит к в двойном отрицании.
var foo = "Hello World!";
!foo // Result: false
!!foo // Result: true
!!
преобразует значение вправо его эквивалентного логического значения. (Подумайте о способе бедняков «приведения типов»). Его намерение обычно состоит в том, чтобы донести до читателя, что код не заботится о том, какое значение находится в переменной, а какое это «истинное» значение . 1117849]
!!foo
applies the unary not operator twice and is used to cast to boolean type similar to the use of unary plus +foo
to cast to number and concatenating an empty string ''+foo
to cast to string.
Instead of these hacks, you can also use the constructor functions corresponding to the primitive types (without using new
) to explicitly cast values, ie
Boolean(foo) === !!foo
Number(foo) === +foo
String(foo) === ''+foo
Это двойная операция , а не
. Первый !
преобразует значение в логическое и инвертирует его логическое значение. Второй !
инвертирует логическое значение обратно.
! является "логическим не", которое по существу приводит значение "enable" к его логической противоположности. Секунда ! переворачивает это значение. Итак, !! enable
означает «не включать», что дает вам значение enable
как логическое.
It's not a single operator, it's two. It's equivalent to the following and is a quick way to cast a value to boolean.
val.enabled = !(!enable);
Это ужасно непонятный способ выполнить преобразование типа.
!
- это НЕ . Итак, ! True
равно false
, а ! False
равно true
. ! 0
равно истина
, а ! 1
- ложь
.
Итак, вы конвертируете значение в логическое значение, затем инвертировать, а затем снова инвертировать.
// Maximum Obscurity:
val.enabled = !!userId;
// Partial Obscurity:
val.enabled = (userId != 0) ? true : false;
// And finally, much easier to understand:
val.enabled = (userId != 0);
Бросать Ваши переменные JavaScript к булевской переменной,
var firstname = "test";
//type of firstname is string
var firstNameNotEmpty = !!firstname;
//type of firstNameNotEmpty is boolean
ложь javascript для"", 0, неопределенный и пустой
JavaScript верен для числа другой затем нуль, не пустые строки, {}, [] и новая Дата () так,
!!("test") /*is true*/
!!("") /*is false*/