2

我正在使用AlarmManager我的应用程序设置提醒。在触发警报事件时,我正在启动一个Activity,Alarmdetails。

问题是随着活动的开始,它也提出了应用程序的任务。我尝试了很多东西,包括 putFLAG_ACTIVITY_MULTIPLE_TASKFLAG_ACTIVITY_NEW_TASK. 但没有什么能正常工作。

使用这些标志会带来另一个问题。请帮帮我。这是主要代码:

Intent i = new Intent(this,AlarmDetails.class);
i.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

i.putExtra("hr", hr);
i.putExtra("min", min);
i.putExtra("message", label);

PendingIntent displayIntent = PendingIntent.getActivity(this, 0, i, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
            displayIntent);
4

2 回答 2

0

我按照您的建议使用解决了这个问题FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_MULTIPLE_TASK,但是从 BroadcastReceiver 类中启动了活动。

设置闹钟:

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

和接收器:

public class AlarmReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent newIntent = new Intent(context, MyAlarmActivity.class);
        newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        newIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
        context.startActivity(newIntent);
    }
}

这对我有用。当闹钟响起时,会创建一个带有 MyAlarmActivity 的新任务 - 如果我从那个新活动返回,我最终会回到闹钟响起之前的任何位置。

于 2012-08-22T10:43:55.843 回答
0

我通过使用解决了这个问题

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

每件事都像魅力一样起作用。

于 2013-06-27T07:42:50.283 回答