0

在我的任务中,我执行了提醒检查过程。如果提醒时间等于当前时间,它将弹出一个弹出框。在此任务中,弹出框正确出现。

但是如果我将此任务合并到某个大进程中,这意味着提醒任务将是主程序的子程序。弹出窗口没有出现在其他屏幕中。如果时间符合当前时间,则在用户使用本程序中的任何屏幕时,必须向用户显示警报。

if (LDbTime <= LSysTime) {
                                    rem_id = c.getString(c.getColumnIndex("reminder_id"));
                                    remName = c.getString(c.getColumnIndex("rname"));
                                    mediaPlayer.start();
                                    handler.post(new Runnable(){
                                    public void run() {
                                        alert.setTitle("Alert :"+remName);
                                        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                                            public void onClick(DialogInterface dialog, int whichButton) {
                                                mediaPlayer.pause();
                                            }
                                        });
                                        alert.show();
                                        db1.execSQL("UPDATE RemainAlarmS SET expired ='TRUE' WHERE reminder_id = " + rem_id );
                                            }
                                        });
                                    Thread.sleep(5000);
                                }

在此警报消息中,需要在提醒唤醒时为前屏显示。

请帮我找到解决方案..

提前致谢。

4

3 回答 3

2

如果您试图询问当您的活动不是用户手机上的重点活动时如何显示对话框,请尝试使用通知。当用户可能正在做其他事情时,在不同的应用程序上弹出一个对话框会打断用户。来自 Android UI 指南:

Use the notification system — don't use dialog boxes in place of notifications

If your background service needs to notify a user, use the standard notification system — 
don't use a dialog or toast to notify them. A dialog or toast would immediately 
take focus    and interrupt the user, taking focus away from what they were doing: 
the user could be in the middle of typing text the moment the dialog appears 
and could accidentally act on the dialog. 
Users are used to dealing with notifications and 
can pull down the notification shade at their convenience to respond to your message.

创建通知的指南在这里:http: //developer.android.com/guide/topics/ui/notifiers/notifications.html

于 2012-09-25T07:17:04.013 回答
2

您可以将以下代码用于待定意图。

Intent i = new Intent("android.intent.action.DA");
PendingIntent operation = PendingIntent.getActivity(getBaseContext(), 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);
AlarmManager alarmManager = (AlarmManager) getBaseContext().getSystemService(ALARM_SERVICE);
GregorianCalendar calendar = new GregorianCalendar(y,m,d, hr, mi);
long alarm_time = calendar.getTimeInMillis();
alarmManager.set(AlarmManager.RTC_WAKEUP  , alarm_time , operation);

而“android.intent.action.DA”表示DisplayNotification.java类的Activity

public class DisplayNotification extends Activity {
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    int notifID = getIntent().getExtras().getInt("NotifID");
    Intent i = new Intent("android.intent.action.AD");
    i.putExtra("NotifID", notifID);  
    PendingIntent detailsIntent =PendingIntent.getActivity(this, 0, i, 0);
    NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    Notification notif = new Notification(R.drawable.ic_launcher,"Time's up!",System.currentTimeMillis());
    CharSequence from = "AlarmManager - Time's up!";
    CharSequence message = "This is your alert, courtesy of the AlarmManager";        
    notif.setLatestEventInfo(this, from, message, detailsIntent);
    notif.vibrate = new long[] { 100, 250, 100, 500};        
    nm.notify(notifID, notif);
    finish();
}
}

而“android.intent.action.AD”表示AlarmDetails.java类

public class AlarmDetails extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.alarmdetails);

    NotificationManager nm = (NotificationManager) 
            getSystemService(NOTIFICATION_SERVICE);
        //---cancel the notification---
        nm.cancel(getIntent().getExtras().getInt("NotifID")); 
}

}

我希望这能帮到您!..

于 2012-10-05T05:12:36.123 回答
-1

您可以改用状态栏通知。

于 2012-09-24T09:00:17.847 回答