2014-02-10 127 views
5

我的任務是觸發一種方法來在每次更改日期(每上午12點)刷新或重置我的應用程序。我試圖在網上搜索一個答案,但我找不到任何東西。我可以使用android中的任何方法/偵聽器嗎?或任何方法? 任何建議傢伙?開啓日期更改監聽器

+0

http://javatyro.blogspot.in/2013/07/android-date-picker-example.html - 可能是這可以幫助你。你可以使用DatePickerLi的onDateSet stener –

+2

@JigarPandya OP沒有要求DatePickerListener ...他希望在系統中的日期更改時發出通知... –

回答

2

是的,你可以聽取Android上的日期/時間變化。爲此,報名參加下列意圖過濾器BroadcastReceiver明確在你的活動:

android.intent.action.ACTION_TIME_TICK 

這個意圖是每分鐘發送一次。您不能通過通過清單中聲明的​​組件接收此內容,但只能通過Context.registerReceiver()明確註冊。

接收機(內)​​類:

private final MyDateChangeReceiver mDateReceiver = new MyDateChangeReceiver(); 

public class MyDateChangeReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(final Context context, Intent intent) { 

     // compare current time and decide if it's 12 AM 
     Log.d("MyDateChangeReceiver", "Time changed"); 

    } 
} 

註冊它在你的onResume方法:

registerReceiver(mDateReceiver, new IntentFilter(Intent.ACTION_TIME_TICK)); 

,不要忘了在你的onPause方法取消其註冊:

try { 
    unregisterReceiver(mDateReceiver); 

} catch (IllegalArgumentException e) { 
    if (e.getMessage().contains("Receiver not registered")) { 
     // Ignore this exception. It's a known bug and is exactly what is desired. 
     //Log.w(TAG,"Tried to unregister the receiver when it's not registered"); 
    } else { 
     // unexpected, re-throw 
     throw e; 
    } 
} 
+0

我會試試這個。我會告訴你。 – Erick

+0

什麼是mLockscreenSentReceiver? – Erick

+0

對不起,我忘了將mLockscreenSentReceiver從我的項目中複製到mDateReceiver。回答更新:) – Saket

0

如果您希望的時間(上午12:00)與系統時間匹配,那麼您必須在每個確定時間間隔檢查系統時間&然後執行您必須執行的操作。對於此任務,您必須使用任一異步任務或報警管理器。如果我沒有錯,那麼這將是你的問題的解決方案希望這可以幫助你。

+0

運行後臺服務以連續檢查和比較時間不是一個好主意。 BroadcastReceiver是一個更好的主意。請看下面的答案:) – Saket