Android AlarmManager不会一天只启动一次

Android AlarmManager不会一天只启动一次,android,alarmmanager,Android,Alarmmanager,我想从另一项活动(A2)开始,每天下午5点启动一项活动(A1),30分钟后我想回到第一项活动(A2)。 我的问题是,在下午5点,良好的活动(A1)启动,30分钟后,第一个活动(A2)启动,但它立即返回到(A1),并且永远循环 public class A1 extends AppCompatActivity { private static final String TAG = A1.class.getName(); private RequestQueue mRequestQueue; pr

我想从另一项活动(A2)开始,每天下午5点启动一项活动(A1),30分钟后我想回到第一项活动(A2)。 我的问题是,在下午5点,良好的活动(A1)启动,30分钟后,第一个活动(A2)启动,但它立即返回到(A1),并且永远循环

public class A1 extends AppCompatActivity {

private static final String TAG = A1.class.getName();
private RequestQueue mRequestQueue;
private StringRequest mStringRequest;
private String url = "http://server/welcome/controller/getannonce.php";
protected TextView Annonce;
protected static int TIME_OUT = 1800000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_close);
    Annonce=findViewById(R.id.textAnnonce);
    //RequestQueue initialized
    mRequestQueue = Volley.newRequestQueue(this);

    //String Request initialized
    mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Annonce.setText(response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            Log.i(TAG,"Error :" + error.toString());
        }
    });

    mRequestQueue.add(mStringRequest);
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent(A1.this, A2.class);
            startActivity(i);
            finish();
        }
    }, TIME_OUT);

}
}


}

可能没有关系,但如果你的应用程序使用互联网,我建议使用一些在线api的时间,而不是依赖用户可以更改的移动设备时间。我想这将是糟糕的用户体验。我的应用程序不使用互联网。
public class A2 extends AppCompatActivity {

private static final String TAG = A2.class.getName();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY, 17);
    calendar.set(Calendar.MINUTE, 0);
    calendar.set(Calendar.SECOND, 0);

    AlarmManager alarm = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, launchClose.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    alarm.setWindow(AlarmManager.RTC, calendar.getTimeInMillis(),15000, pendingIntent);
}
public class launchClose extends BroadcastReceiver {
private static final String TAG = launchClose.class.getName();
@Override
public void onReceive(Context context, Intent intent) {
    Intent myintent = new Intent(context, A1.class);
    myintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(myintent);
}