Change summary
src/main/java/eu/siacs/conversations/services/NotificationService.java | 16
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 13
2 files changed, 18 insertions(+), 11 deletions(-)
Detailed changes
@@ -900,15 +900,17 @@ public class NotificationService {
final Notification.Builder mBuilder = new Notification.Builder(mXmppConnectionService);
mBuilder.setContentTitle(mXmppConnectionService.getString(R.string.app_name));
if (Compatibility.runsAndTargetsTwentySix(mXmppConnectionService) || Config.SHOW_CONNECTED_ACCOUNTS) {
- List<Account> accounts = mXmppConnectionService.getAccounts();
+ final List<Account> accounts = mXmppConnectionService.getAccounts();
int enabled = 0;
int connected = 0;
- for (Account account : accounts) {
- if (account.isOnlineAndConnected()) {
- connected++;
- enabled++;
- } else if (account.isEnabled()) {
- enabled++;
+ if (accounts != null) {
+ for (Account account : accounts) {
+ if (account.isOnlineAndConnected()) {
+ connected++;
+ enabled++;
+ } else if (account.isEnabled()) {
+ enabled++;
+ }
}
}
mBuilder.setContentText(mXmppConnectionService.getString(R.string.connected_accounts, connected, enabled));
@@ -198,6 +198,7 @@ public class XmppConnectionService extends Service {
private ShortcutService mShortcutService = new ShortcutService(this);
private AtomicBoolean mInitialAddressbookSyncCompleted = new AtomicBoolean(false);
private AtomicBoolean mForceForegroundService = new AtomicBoolean(false);
+ private AtomicBoolean mForceDuringOnCreate = new AtomicBoolean(false);
private OnMessagePacketReceived mMessageParser = new MessageParser(this);
private OnPresencePacketReceived mPresenceParser = new PresenceParser(this);
private IqParser mIqParser = new IqParser(this);
@@ -964,6 +965,11 @@ public class XmppConnectionService extends Service {
@SuppressLint("TrulyRandom")
@Override
public void onCreate() {
+ if (Compatibility.runsTwentySix()) {
+ mNotificationService.initializeChannels();
+ }
+ mForceDuringOnCreate.set(Compatibility.runsAndTargetsTwentySix(this));
+ toggleForegroundService();
this.destroyed = false;
OmemoSetting.load(this);
ExceptionHelper.init(getApplicationContext());
@@ -975,9 +981,6 @@ public class XmppConnectionService extends Service {
Resolver.init(this);
this.mRandom = new SecureRandom();
updateMemorizingTrustmanager();
- if (Compatibility.runsTwentySix()) {
- mNotificationService.initializeChannels();
- }
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
final int cacheSize = maxMemory / 8;
this.mBitmapCache = new LruCache<String, Bitmap>(cacheSize) {
@@ -1046,6 +1049,8 @@ public class XmppConnectionService extends Service {
intentFilter.addAction(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED);
registerReceiver(this.mInternalEventReceiver, intentFilter);
}
+ mForceDuringOnCreate.set(false);
+ toggleForegroundService();
}
private void checkForDeletedFiles() {
@@ -1132,7 +1137,7 @@ public class XmppConnectionService extends Service {
private void toggleForegroundService(boolean force) {
final boolean status;
- if (force || mForceForegroundService.get() || (Compatibility.keepForegroundService(this) && hasEnabledAccounts())) {
+ if (force || mForceDuringOnCreate.get() || mForceForegroundService.get() || (Compatibility.keepForegroundService(this) && hasEnabledAccounts())) {
startForeground(NotificationService.FOREGROUND_NOTIFICATION_ID, this.mNotificationService.createForegroundNotification());
status = true;
} else {