簡體   English   中英

即使沒有時間,AlarmManager也會重復通話

[英]AlarmManager repeats call even if its not time

我正在使用警報管理器來調用api。 在活動onCreate中調用它。 我希望它在應用程序啟動時發出警報,然后每三個小時發出一次警報。

Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.set(Calendar.HOUR_OF_DAY,1);
    AlarmManager alarmManager1 = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent myIntent1 = new Intent(LobbyActivity.this,WeatherBroadCastReceiverCurrent.class);
    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this,0,myIntent1,0);

    alarmManager1.setInexactRepeating(AlarmManager.RTC,calendar.getTimeInMillis(),AlarmManager.INTERVAL_HOUR+
            AlarmManager.INTERVAL_HOUR+AlarmManager.INTERVAL_HOUR/*(1000*60*60*3)*/,pendingIntent1);

然后,該活動結束,並在單擊按鈕時繼續進行另一活動。 我的問題是-如果重新創建活動,即使不是時間,它也會發出警報。 我可以在非活動類上設置一個警報,以便在重新創建活動時不會將其調出嗎? 如果是這樣怎么辦? 蒂亞

嘗試通過刪除calendar.set(Calendar.HOUR_OF_DAY,1)來運行 並運行,它將在應用程序啟動時發出警報

要簡單地解決此問題,您需要創建一個標志並將其設置為true,以便活動可以檢查是否已設置過警報,是否已設置警報,然后它將繼續前進而不進行設置。

為此,使用SharedPreferences是理想的。 這是我的摘要之一,請根據需要進行編輯。

SharedPreferences prefs;
SharedPreferences.Editor ed;
prefs = PreferenceManager.getDefaultSharedPreferences(this);
ed = prefs.edit();
boolean isOpeningForTheFirstTime = prefs.getBoolean("firstTime", true);

if(!isOpeningForTheFirstTime) {
    Intent i = new Intent(this, StartScreen.class);
    startActivity(i);
    finish();
}

通過刪除一些內容,可以簡化AlarmManager。

public void setAlarm(){

    //To get the current time
    long alertTime = new GregorianCalendar().getTimeInMillis();

    //Interval of a minute
    int timeInterval = 60000;

    //Intent which you want to start
    Intent alertIntent = new Intent(this, ClassName.class);

    //Declaring the alarmManager
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    //Setting the alarmmanager up.
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, timeInterval, PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM