如果我按下后退按钮,android报警功能不起作用

时间:2014-12-19 15:01:39

标签: android alarmmanager alarm android-alarms

我在我的应用程序中实现了一个报警管理器和接收器,一切都运行良好。我遇到的问题是当我按下后退按钮关闭应用程序时,警报不会在指定的时间运行。以下是我正在使用的代码:

我的收件人代码

    public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        System.out.println("SERVICE RECIEVED");
        Intent service1 = new Intent(context, MyAlarmService.class);
        context.startService(service1);
    }

}

我的警报服务代码

public class MyAlarmService extends Service {

    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
    }

    @SuppressWarnings("static-access")
    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);

        Intent _intent = new Intent(getBaseContext(), FirstCallActivity.class);
        _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        getApplication().startActivity(_intent);
    }

    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }
}

启动警报代码

public void startAlarm(Calendar cal) {

    // Create a new PendingIntent and add it to the AlarmManager
    Intent intent = new Intent(this, FirstCallActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 12345,
            intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}

清单代码(在应用程序标记内)

 <service
    android:name=".MyAlarmService"
    android:enabled="true" />

    <receiver android:name=".MyReceiver" />

有人可以解释为什么会这样吗?我知道如果应用程序完全关闭,将不会发生任何事情,但我看起来很奇怪后退按钮导致此问题,因为应用程序仍在后台运行。

由于

1 个答案:

答案 0 :(得分:0)

事实证明应用程序正在关闭后退按钮。通过使用下面的代码按下后退按钮上的应用程序关闭,设置警报所需的功能正确运行。

@Override
    public void onBackPressed() {
        System.out.println("BACK PRESS");
        moveTaskToBack(true);
    }