0
我想在稍后的时间使用AlarmManager执行一次操作。我跟着代码和问题here,想出了这个。使用Alarm Manager执行一次任务
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广播接收器。所以我想出了这个。会发生什么是我总是得到第一步但从未到达第二步。我做错了什么?任何帮助将受到欢迎。
谢谢。我已经有一个服务在运行。我可以使用AlarmManager在现有服务中运行功能吗? – user1429322
如果您的服务已经是IntentService,那么您可以让它监听广播并安排自己的闹钟。否则,您可以像这样与您的服务进行通信:http://stackoverflow.com/a/2463746 – Buddy