【问题标题】:Set alarm when activity is destroyed活动被破坏时设置警报
【发布时间】:2016-06-07 10:00:54
【问题描述】:

我正在尝试在活动被破坏时设置警报。但它不起作用。如果我在活动停止时设置警报,它正在工作。但是对于破坏方法,它是行不通的。我不知道我是错过了什么还是什么?如果可能的话,如何在活动被破坏时设置警报?

以下是我的代码:

@Override
    protected void onDestroy() {


        databaseHandler.updatePreference(Keys.Pref.APP_CRASH_STATUS, "TRUE");
        setAlarmToOpenApp();
        super.onDestroy();
    }

private void setAlarmToOpenApp(){
        Intent alarmIntent = new Intent(ActivityDisplay.this, AppCrashReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(ActivityDisplay.this, 0, alarmIntent, 0);
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int interval = 10000;

        manager.set(AlarmManager.RTC_WAKEUP,  System.currentTimeMillis() + 10000, pendingIntent);
        Display.log(TAG, "Alarm is set to  Broadcast app crash");
    }

【问题讨论】:

  • 嗯。也许这在Service 中实现会更好,因为onDestroy 可能不会被调用。此外,您的 Activity 已被销毁,因此不可用(null)。
  • @Amylinn 我的应用程序被销毁时是否可以发送广播?
  • @Amylinn 是的,我们可以通过该方法检查活动状态。但我试图设置警报。
  • 这不仅仅是关于状态。服务有它自己的上下文,你可以用它来代替吗?

标签: android android-activity alarmmanager


【解决方案1】:

onDestroy 会扭曲您的所有应用活动,这意味着不会执行特定方法中的所有代码。在 onStop 活动停止片刻,它不会被破坏,因此除了视觉之外的任何活动都会采取行动,但是使用 onDestroy 你将永远无法做到这一点,你可以为通知创建一个活动,也许这会解决。或者进行操作系统编程,但你会远离纯 android,我的建议是尝试在通知活动上设置警报,我不确定,但这是可能的

【讨论】: