11package com .marcshilling .idletimer ;
22
3- import com .facebook .react .bridge .NativeModule ;
43import com .facebook .react .bridge .ReactApplicationContext ;
5- import com .facebook .react .bridge .ReactContext ;
64import com .facebook .react .bridge .ReactContextBaseJavaModule ;
75import com .facebook .react .bridge .ReactMethod ;
8- import java . util . Map ;
9- import java .util .HashMap ;
6+
7+ import java .util .HashSet ;
108
119import android .app .Activity ;
1210import android .view .WindowManager ;
1311
12+ import org .jetbrains .annotations .NotNull ;
13+
1414public class IdleTimerManager extends ReactContextBaseJavaModule
1515{
1616 static final String MODULE_NAME = "IdleTimerManager" ;
1717
18+ static final HashSet <String > tags = new HashSet ();
19+
1820 public IdleTimerManager (ReactApplicationContext reactContext ) {
1921 super (reactContext );
2022 }
@@ -25,22 +27,30 @@ public String getName() {
2527 }
2628
2729 @ ReactMethod
28- public void setIdleTimerDisabled (final boolean disabled ) {
29-
30+ public void setIdleTimerDisabled (final boolean disabled , final String tag ) {
3031 final Activity activity = this .getCurrentActivity ();
31- if (activity != null ) {
32- activity .runOnUiThread (new Runnable () {
33- @ Override
34- public void run () {
35- if (disabled ) {
36- activity .getWindow ().addFlags (WindowManager .LayoutParams .FLAG_KEEP_SCREEN_ON );
37- } else {
38- activity .getWindow ().clearFlags (WindowManager .LayoutParams .FLAG_KEEP_SCREEN_ON );
39- }
40- }
41- });
32+ if (disabled ) {
33+ activate (activity , tag );
34+ } else {
35+ deactivate (activity , tag );
4236 }
37+ }
4338
39+ public static void activate (@ NotNull final Activity activity , final String tag ) {
40+ if (tags .isEmpty ()) {
41+ activity .runOnUiThread (() -> {
42+ activity .getWindow ().addFlags (WindowManager .LayoutParams .FLAG_KEEP_SCREEN_ON );
43+ });
44+ }
45+ tags .add ((tag == null ? "" : tag ));
46+ }
4447
48+ public static void deactivate (@ NotNull final Activity activity , final String tag ) {
49+ if (tags .size () == 1 && tags .contains ((tag ))) {
50+ activity .runOnUiThread (() -> {
51+ activity .getWindow ().clearFlags (WindowManager .LayoutParams .FLAG_KEEP_SCREEN_ON );
52+ });
53+ }
54+ tags .remove ((tag == null ? "" : tag ));
4555 }
4656}
0 commit comments