我在我的应用程序中实现了一个报警管理器和接收器,一切都运行良好。我遇到的问题是当我按下后退按钮关闭应用程序时,警报不会在指定的时间运行。以下是我正在使用的代码:
我的收件人代码
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" />
有人可以解释为什么会这样吗?我知道如果应用程序完全关闭,将不会发生任何事情,但我看起来很奇怪后退按钮导致此问题,因为应用程序仍在后台运行。
由于
答案 0 :(得分:0)
事实证明应用程序正在关闭后退按钮。通过使用下面的代码按下后退按钮上的应用程序关闭,设置警报所需的功能正确运行。
@Override
public void onBackPressed() {
System.out.println("BACK PRESS");
moveTaskToBack(true);
}