/** * Copyright (c) 2013, Redsolution LTD. All rights reserved. * * This file is part of Xabber project; you can redistribute it and/or * modify it under the terms of the GNU General Public License, Version 3. * * Xabber is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License, * along with this program. If not, see http://www.gnu.org/licenses/. */ package com.xabber.android.service; import android.app.Service; import android.content.Context; import android.content.Intent; import android.os.IBinder; import com.xabber.android.data.Application; import com.xabber.android.data.account.AccountManager; import com.xabber.android.data.log.LogManager; import com.xabber.android.data.SettingsManager; import com.xabber.android.data.notification.NotificationManager; /** * Basic service to work in background. * * @author alexander.ivanov */ public class XabberService extends Service { private static XabberService instance; public static XabberService getInstance() { return instance; } @Override public void onCreate() { super.onCreate(); instance = this; LogManager.i(this, "onCreate"); changeForeground(); } public void changeForeground() { LogManager.i(this, "changeForeground"); if (SettingsManager.eventsPersistent() && Application.getInstance().isInitialized() && !AccountManager.getInstance().getEnabledAccounts().isEmpty()) { startForeground(NotificationManager.PERSISTENT_NOTIFICATION_ID, NotificationManager.getInstance().getPersistentNotification()); } else { stopForeground(true); } } @Override public int onStartCommand(Intent intent, int flags, int startId) { int result = super.onStartCommand(intent, flags, startId); LogManager.i(this, "onStartCommand"); Application.getInstance().onServiceStarted(); return result; } @Override public void onDestroy() { super.onDestroy(); LogManager.i(this, "onDestroy"); stopForeground(true); Application.getInstance().onServiceDestroy(); } @Override public IBinder onBind(Intent intent) { return null; } public static Intent createIntent(Context context) { return new Intent(context, XabberService.class); } }