diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index fa910e1613..0da75f91bd 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -141,6 +141,9 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState, false); + LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); + lbm.registerReceiver(creceiver, new IntentFilter(ACTION_NEW_MESSAGE)); + if (savedInstanceState != null) searching = savedInstanceState.getBoolean("fair:searching"); @@ -617,7 +620,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB iff.addAction(ACTION_EDIT_ANSWER); iff.addAction(ACTION_EDIT_RULES); iff.addAction(ACTION_EDIT_RULE); - iff.addAction(ACTION_NEW_MESSAGE); lbm.registerReceiver(receiver, iff); checkUpdate(false); @@ -631,6 +633,13 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB lbm.unregisterReceiver(receiver); } + + @Override + protected void onDestroy() { + unregisterReceiver(creceiver); + super.onDestroy(); + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -1131,6 +1140,32 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB fragmentTransaction.commit(); } + private BroadcastReceiver creceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + onNewMessage(intent); + } + }; + + private List updatedFolders = new ArrayList<>(); + + boolean isFolderUpdated(long folder) { + boolean value = updatedFolders.contains(folder); + if (value) + updatedFolders.remove(folder); + return value; + } + + private void onNewMessage(Intent intent) { + long folder = intent.getLongExtra("folder", -1); + boolean unified = intent.getBooleanExtra("unified", false); + + if (!updatedFolders.contains(folder)) + updatedFolders.add(folder); + if (unified && !updatedFolders.contains(-1L)) + updatedFolders.add(-1L); + } + private BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -1155,8 +1190,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB onEditRules(intent); else if (ACTION_EDIT_RULE.equals(action)) onEditRule(intent); - else if (ACTION_NEW_MESSAGE.equals(action)) - onNewMessage(intent); } } }; @@ -1261,25 +1294,6 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB fragmentTransaction.commit(); } - private List updatedFolders = new ArrayList<>(); - - boolean isFolderUpdated(long folder) { - boolean value = updatedFolders.contains(folder); - if (value) - updatedFolders.remove(folder); - return value; - } - - private void onNewMessage(Intent intent) { - long folder = intent.getLongExtra("folder", -1); - boolean unified = intent.getBooleanExtra("unified", false); - - if (!updatedFolders.contains(folder)) - updatedFolders.add(folder); - if (unified && !updatedFolders.contains(-1L)) - updatedFolders.add(-1L); - } - private class UpdateInfo { String tag_name; // version String html_url;