如何在活动开始前强制关闭活动?

时间:2012-12-08 22:41:11

标签: android alarmmanager android-alarms

我正在做一个警报应用程序,我正在使用一种方法在特定时间内启动一项活动, 我在我的应用程序中有一个选项,叫做enable \ disable,当我检查禁用框时,我不希望闹钟打开活动(播放声音和我选择的图像)! 所以我正在寻找一种在活动开始之前关闭活动的方法。不要在屏幕上显示任何显示活动正在开始和结束! 我正在使用此方法在特定时间内打开特定活动

     Intent myIntent = new Intent(SharedPrefs.this,MainPhoto.class);
     pendingIntent = PendingIntent.getActivity(MainPhoto.this, 0, myIntent, 0);
     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(System.currentTimeMillis()+10000);
     alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

对此有何帮助?

3 个答案:

答案 0 :(得分:1)

cancelling the alarm怎么样,或者使用将要打开而不是活动的服务,检查是否需要打开活动?

答案 1 :(得分:0)

我建议将复选框作为共享首选项,然后在关闭新活动的意图之前,检查它是否已禁用...如果您确实想要启动新活动,请检查是否选中该复选框,如果是,则调用finish();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (Checkbox.checked())
        finish();
}

希望这会有所帮助:)

答案 2 :(得分:0)

取消闹钟可能是最好的解决方案。

可能有一些罕见的情况,在您调用活动之前,您不知道。在这些情况下,只需在finish()

之前致电setContentView
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (/* Check here if valid */) {
            finish();
        } else {
            setContentView(R.layout.some_layout);
            /* Actually do your initialization. */
        }
    }