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