Я пытаюсь выполнить действие один раз в более позднее время с помощью AlarmManager. Я выполнил код и вопрос here и придумал это.Использование диспетчера аварийных сигналов для выполнения задачи после
public class EmailAccountUpdater extends BroadcastReceiver
{
// Constructors
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(AccountManager.LOGIN_ACCOUNTS_CHANGED_ACTION))
{
Log.v("Test", " Step 1 - Creating the alarm ");
// Place holder
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent newIntent = new Intent("com.test.EMAIL_ACCOUNTS_CHANGED");
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, newIntent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, 35000, pendingIntent);
}
}
}
AlarmReceiver.java
public class AlarmReceiver extends BroadcastReceiver
{
// constructors
@Override
public void onReceive(Context context, Intent intent)
{
Log.v("Test","Step 2 - Alarm received");
if (intent.getAction().equals("com.test.EMAIL_ACCOUNTS_CHANGED"))
{
onAccountsUpdated();
}
}
public void onAccountsUpdated()
{
// do something
}
}
В manifestManifest.xml
<receiver android:name="full.path.AlarmReceiver">
<intent-filter>
<action android:name="com.test.EMAIL_ACCOUNTS_CHANGED"/>
</intent-filter>
</receiver>
В основном то, что я хотел сделать, это поставить следующее подстановку (чуть ниже первого оператора журнала) ,
Thread.sleep(35000);
onAccountsUpdated();
Но согласно this, не внушаемы использовать postDelayed и Thread.sleep в BroadcastReceiver. Поэтому я придумал это. Что происходит, я всегда получаю шаг 1, но никогда не достигаю шага 2. Что я делаю неправильно? Любая помощь приветствуется.
Спасибо. У меня уже есть сервис. Могу ли я использовать AlarmManager для запуска функции в существующей службе? – user1429322
Если ваш сервис уже является IntentService, тогда вы можете просто прослушать его и назначить собственный будильник. В противном случае вы можете связаться со своим сервисом следующим образом: http://stackoverflow.com/a/2463746 – Buddy