package com.ango.deskclock; import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.HandlerThread; /**
* Helper class for managing the background thread used to perform io operations
* and handle async broadcasts.
*/
final class AsyncHandler { private static final HandlerThread sHandlerThread =
new HandlerThread("AsyncHandler");
private static final Handler sHandler;
private static Runnable aRunnable; static {
sHandlerThread.start();
sHandler = new Handler(sHandlerThread.getLooper());
} public static void post(Runnable r) {
sHandler.post(r);
} public static final boolean postDelayed(Context context, Alarm alarm, long delayMillis) {
final Context sContext = context;
final Alarm sAlarm = alarm;
aRunnable = new Runnable() {
@Override public void run() {
Intent playAlarm = new Intent(Alarms.ALARM_ALERT_ACTION);
playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, sAlarm);
sContext.startService(playAlarm);
}
};
return sHandler.postDelayed(aRunnable, delayMillis);
} public static final void removeCallbacks (){
sHandler.removeCallbacks(aRunnable);
} private AsyncHandler() {}
}
AsyncHandler.post(new Runnable() {
@Override public void run() {
handleIntent(context, intent);
result.finish();
wl.release();
}
});
// // Play the alarm alert and vibrate the device after 10 seconds so that the user can dismiss or snooze before the alarm alert.
// Intent playAlarm = new Intent(Alarms.ALARM_ALERT_ACTION);
// playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA, alarm);
// context.startService(playAlarm);
AsyncHandler.postDelayed(context, alarm, 10000);
AsyncHandler.removeCallbacks(); // remove the AsyncHandler.postDelayed(context, alarm, 10000) in AlarmReceiver.java
版权声明:本文博客原创文章,博客,未经同意,不得转载。