我想弄清楚鬧鐘定時器是如何工作的,以便在用戶選擇應用中的預定義時間時觸發事件。首先,我只想顯示敬酒,以便我可以清楚地看到該應用程序正在工作。但是當我運行該應用程序並設置時間爲10秒時,處理我的意圖的類似乎永遠不會被調用。觸發鬧鐘定時器的Android顯示屏吐司
我在Main中使用了Log.d
,當按鈕被點擊時,我可以看到它被正確記錄。但是這個事件在選定的時間沒有發生。
這是當單擊按鈕並在控制檯中顯示Log.d時觸發的功能。
public void scheduleAlarm()
{
Long time = System.currentTimeMillis() + 10000;
Log.d("logs", "This is running in the main act");
Intent intentAlarm = new Intent(this, affirmationSchedule.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, time, PendingIntent.getBroadcast(this, 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));
Toast.makeText(this, "Alarm Has Been Scheduled", Toast.LENGTH_LONG).show();
}
這是處理的代碼時,報警時間已到
public class affirmationSchedule extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("logs", "This function is running");
Toast.makeText(context, "this is a toast working.", Toast.LENGTH_LONG).show();
}
}
Log.d never displays. the toast in this class never displays.
這使我相信我沒有正確地創建我的對象將運行的類。
這就是我在清單中註冊接收者的方式。
<receiver
android:name="com.wuno.wunoaffirmations"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.wuno.BroadcastReceiver" />
</intent-filter>
</receiver>
任何想法?
這可能是相關的,
後,我按一下按鈕,原來的土司消失。這在控制檯彈出。
05-16 23:10:11.989 14242-14268/com.wuno.wunoaffirmations E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb4015c60
但不到十秒鐘。更像5. AlarmManager設置爲10秒。
你可以編輯你的原始問題。無論如何,''元素上的'name'屬性必須是您的'BroadcastReceiver'類名。其他一切看起來都不錯,但你並不需要'',或'enabled'或'exported'屬性。 –
如果您的Receiver類位於主源文件夾中(即您的主「Activity」通常位於其中),那麼它只會是 '。您可能還想使用'setExact()'方法,至少在測試時。從KitKat開始,'set()'方法是不精確的,並且可能會有所不同。 –
好吧,有一種方法可以用adb來檢查你的應用程序的警報,但是如果你的''scheduleAlarm()'方法正在運行,那麼你的警報應該設置得很好。不知道。一切似乎都很好。嘗試清理和重建項目,並重新啓動您正在測試的設備或模擬器。哦,並確保您的''位於清單中的'標籤內。 –