【问题标题】:Is there a way to kill an activity when PendingIntent is fired?当 PendingIntent 被触发时,有没有办法杀死一个活动?
【发布时间】:2013-03-13 07:28:46
【问题描述】:

在 Android 中要终止一个 Activity,您只需使用 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 中进行了一些搜索,但找不到答案。

【问题讨论】:

  • 解释你的Activity 做了什么。您可能不应该使用AlarmManager,而且您也无法控制用户使用BACK 按钮完成Activity
  • 如果您想在特定时间完成活动,请调用计时器任务。并在其中调用完成。
  • @Squonk 我必须在特定时间(例如 12h00、13h00、15h00,...)捕获视频。当应用程序捕获视频 2 分钟时,我希望它返回到预览活动(MainActivity.java)。我不愿意先使用 AlarmManager,但经过几天和几天的研究,我意识到我别无选择。如果您知道更好的方法,请分享。
  • @SREEJITH 谢谢!这是我没有想到的一种方式。

标签: android android-activity alarmmanager android-pendingintent


【解决方案1】:

在计时器内,您可以获得未决意图的时间延迟。

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

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

    }
},pending intent delay);

请试试这个。它对我有用

【讨论】:

  • alarm.set 方法中的 cal.getTimeInMillis() 是什么?
  • 我在问了这个愚蠢的问题后想通了。我现在正在尝试您的解决方案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 谢谢!似乎设置为 Intent.FLAG_ACTIVITY_SINGLE_TOP 是为了工作。
    • 好吧,经过一些测试,我发现 FLAG_ACTIVITY_SINGLE_TOP 没有清除堆栈中的活动。
    猜你喜欢
    • 1970-01-01
    • 2022-07-15
    • 2013-01-16
    • 1970-01-01
    • 2021-08-23
    • 2017-02-15
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    相关资源
    最近更新 更多