1

在 Android 中要杀死一个活动,你只需使用finish(). 但就我而言,我想在PendingIntent被解雇时终止活动。

我的代码如下:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Utils.KEY_RECORD_TIME, recordLength);

PendingIntent pintent = PendingIntent.getActivity(MainActivity.this,
        piNumber, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent);

如果我在finish()下面添加,活动将在AlarmManager.

我希望该活动可见,直到时间结束并杀死它。有没有办法做到这一点?我在 Stack Overflow、Google 中进行了一些搜索,但找不到答案。

4

3 回答 3

2

您可以BroadcastReceiver在活动中动态注册。对于未决意图,您可以使用getBroadcast(). 因此,finish()当警报管理器调用广播接收器时,您可以在广播接收器内部调用它。请注意,当您不再需要接收器时,您必须onDestroy()取消注册它,例如,您可以这样做。

于 2013-03-13T07:41:10.307 回答
2

在计时器内,您可以获得待处理意图的时间延迟。

    new Timer().schedule(new TimerTask() {

    @Override
    public void run() {
        // TODO Auto-generated method stub

    }
},pending intent delay);

请试试这个。它对我有用

于 2013-03-13T08:19:44.870 回答
1

onNewIntent(Intent)。如果您可以将活动作为单个顶部开始,那么您的实例应该通过该调用接收待处理的意图。

如果您不能使用单顶,并且您的活动的新实例正在启动,您可以使用共享静态来获取onCreate()新实例的原始实例,并且finish()两者都可以。

于 2013-03-13T07:39:01.577 回答