2013-05-27 2 views
0

Привет и спасибо за помощь.Android: как перехватить, когда служба работает в первый раз

У меня есть следующая ситуация.

У меня есть AlarmManager, который срабатывает Службой каждые 1 минуту.

Я должен выполнить конкретный метод в этой службе только в том случае, если Служба запущена в первый раз. нет, когда начинается последующее время.

Я не думаю, что общие предпочтения - это решения, поскольку они сохраняются, если телефон выключен.

Пожалуйста, как это решить?

Благодарим за предложение!

+0

Я бы добавил службу или трансляцию к будильщику, который был бы запущен первым и только один раз, чтобы сбросить содержимое общей команды pref. Или, может быть, вы можете записать файл в/tmp, который необходимо удалить при перезагрузке – njzk2

ответ

1

Попробуйте унаследовать форму приложения и хранить в нем ..

public class YourApp extends Application { 

private static boolean mFirstRun = false; 

public static boolean getFirstRun() { return mFirstRun; } 
public static void clearFirstRun() { mFirstRun = false; } 

от службы:

if (YourApp.getFirstRun()) 
{ 
    clearFirstRun(); 
    // run first time code 
} 
+0

спасибо! Это сработало хорошо! –

1

Вы можете называть его inCreate(). См. here в официальной документации. Он говорит:

Called by the system when the service is first created. Do not call this method directly.
Для справки вы можете увидеть вопрос When does Application's onCreate() method get called? и If android restarts a Service is onCreate called again?

+0

, но он может быть создан во второй раз, хотя он всегда запускается. –

+0

Yaa, если он был убит когда-то, а затем перезапущен. Итак, даже если он убит, вы не хотите называть свой код? Вы просто хотите просто называть его один раз, если весь срок службы приложения. –

Смежные вопросы