force foreground service during onCreate()
creating / upgrading the database and reading accounts can be expensive and will otherwise trigger an AN
This commit is contained in:
		
							parent
							
								
									d02fd73af8
								
							
						
					
					
						commit
						004411cf51
					
				| @ -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 { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch