Android AlarmManager不会一天只启动一次
我想从另一项活动(A2)开始,每天下午5点启动一项活动(A1),30分钟后我想回到第一项活动(A2)。 我的问题是,在下午5点,良好的活动(A1)启动,30分钟后,第一个活动(A2)启动,但它立即返回到(A1),并且永远循环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
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);
}