@@ -67,12 +67,21 @@ public class MainActivity extends ActivityWithDialog {
6767 @ Override
6868 public void onServiceConnected (ComponentName componentName , IBinder iBinder ) {
6969 serviceMessenger = new Messenger (iBinder );
70+
71+ IntentFilter filter = new IntentFilter ();
72+ for (BinService .Action action : BinService .Action .values ())
73+ filter .addAction (action .toString ());
74+
75+ receiver = new ServiceBroadcastReceiver ();
76+ broadcastManager .registerReceiver (receiver , filter );
77+
7078 askForStatus ();
7179 }
7280
7381 @ Override
7482 public void onServiceDisconnected (ComponentName componentName ) {
7583 serviceMessenger = null ;
84+ broadcastManager .unregisterReceiver (receiver );
7685 }
7786 };
7887 private ToggleButton toggleServer ;
@@ -413,12 +422,7 @@ public void askRationale(@NonNull AlertDialog.Builder builder) {
413422 }
414423 }
415424
416- IntentFilter filter = new IntentFilter ();
417- for (BinService .Action action : BinService .Action .values ())
418- filter .addAction (action .toString ());
419425
420- receiver = new ServiceBroadcastReceiver ();
421- broadcastManager .registerReceiver (receiver , filter );
422426 try {
423427 bindService (new Intent (this , BinService .class ), serviceConnection , BIND_AUTO_CREATE );
424428 startService (new Intent (this , BinService .class )
@@ -427,13 +431,8 @@ public void askRationale(@NonNull AlertDialog.Builder builder) {
427431 return true ;
428432 } catch (JSONException ex ) {
429433 Toaster .with (this ).message (R .string .failedLoadingOptions ).ex (ex ).show ();
430- broadcastManager .unregisterReceiver (receiver );
431- return false ;
432- } /*catch (RemoteException ex) {
433- Toaster.with(this).message(R.string.failedStarting).ex(ex).show();
434- LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver);
435434 return false ;
436- } */
435+ }
437436 }
438437
439438 @ Override
@@ -465,7 +464,7 @@ private boolean stopService() {
465464 startService (new Intent (this , BinService .class )
466465 .setAction (BinService .ACTION_STOP_SERVICE ));
467466
468- broadcastManager . unregisterReceiver ( receiver );
467+
469468
470469 Bundle bundle = null ;
471470 if (Prefs .getLong (PK .CURRENT_SESSION_START , -1 ) != -1 ) {
@@ -579,14 +578,13 @@ public void onReceive(Context context, final Intent intent) {
579578 runOnUiThread (() -> {
580579 switch (action ) {
581580 case SERVER_STATUS :
582- updateUiStatus (intent .getBooleanExtra ("on" , false )); // FIXME: UI changes are not applied
581+ updateUiStatus (intent .getBooleanExtra ("on" , false ));
583582 break ;
584583 case SERVER_START :
585584 addLog (new Logging .LogLine (Logging .LogLine .Type .INFO , getString (R .string .serverStarted )));
586585 break ;
587586 case SERVER_STOP :
588587 addLog (new Logging .LogLine (Logging .LogLine .Type .INFO , getString (R .string .serverStopped )));
589- broadcastManager .unregisterReceiver (receiver );
590588 updateUiStatus (false );
591589 break ;
592590 case SERVER_EX :
0 commit comments