我在一个Activity
类中使用了计时器方法。在该方法中,我有一个从Activity
类到BroadcastReceiver
类的意图。
通过使用AlarmManager
,这个BroadcastReceiver
类将在后台每15分钟调用一次。
当我调用BroadcastReceiver
类时,我想弹出一个AlertDialog
。
public void timerMethod(){
Intent intent = new Intent(Activity.this,
BroadcastReceiverClass.class
);
PendingIntent sender = PendingIntent.getBroadcast(
QualityCallActivity.this,0, intent, 0
);
// We want the alarm to go off 30 seconds from now.
long firstTime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime, 60*1000, sender);
}
BroadcastReceiverClass.java
public void onReceive(Context context, Intent intent)
{
dialogMethod();
}
我该如何从后台进程中的
BroadcastReceiver
类中引发一个AlertDialog
?
AlertDialog
的观点很有道理,但是从BroadcastReceiver
中显示它是完全可行的。正如我在我的回答中指出的那样,如果你的BroadcastReceiver
是你的活动的内部类,它就可以工作。请查看我的更新后的答案以获取代码。 - Joel FBroadcastReceiver
是 Activity 的内部类,并且仅当接收器被“调用”时该 Activity 被打开时才有效。这感觉有点 hackie,似乎不是 Android 开发人员所想要的。相反,使用Toast
或Notification
在没有这些限制的情况下可以很好地工作。 - Lukas Knuth