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 a new issue