2014-02-10 82 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