2015-11-03 37 views
2

我需要重置每天00:00在sharedPreferences中存储的值。我编写了一个方法来重新设置。到目前为止,我正在使用的是当时将调用该方法的countdowntimer。但如果应用程序是关闭/杀死我不知道计时器是否会继续工作。 如果不是,我该怎么做?因为我读过你不能调用使用AlarmManager的方法,至少不容易。 非常感谢你给我的任何帮助。当我的应用程序暂停/杀死/销毁时,倒计时器是否停止/销毁?

我跳过了不参与此操作的代码,因此您不必通读它。我想要使​​用此警报,但方法从不会被调用,所以我不会重置需要的值。 请注意,现在报警设置为10秒进行调试。

这里是报警类别:

public class Twelve_Oclock_Alarm2 extends BroadcastReceiver{ 
private final String LOG_TAG = Twelve_Oclock_Alarm2.class.getSimpleName(); 

@Override 
public void onReceive(Context context, Intent intent) { 
    Log.i(LOG_TAG, "OnRecieve"); 
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, ""); 
    wl.acquire(); 
    Log.i(LOG_TAG, "Deberia estar reseteando el valor"); 
    SharedPreferences prefs = context.getSharedPreferences(context.getString(R.string.votes_key), Activity.MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt(context.getString(R.string.votes_key), 1); 
    editor.commit(); 

    wl.release(); 
} 

public void SetAlarm(Context context){ 
    AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent i = new Intent("com.myrelease.duquep.you_matter.ACTION_EVENT_TIME"); 
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, 10000 , pi); 

} 

} 

这里是我的清单的一部分:

<receiver 
     android:name=".Twelve_Oclock_Alarm2" 
     android:enabled="true" 
     android:process=":remote" > 
     <intent-filter> 
      <action android:name="com.myrelease.duquep.you_matter.ACTION_EVENT_TIME"/> 
     </intent-filter> 
</receiver> 

这里是它被调用:

public class VoteActivity extends Activity { 
    twelve_oclock_alarm2 = new Twelve_Oclock_Alarm2(); 
    twelve_oclock_alarm2.SetAlarm(VoteActivity.this); 
} 

也知道我我试图用这种方式来实现我的意图:(它也没有工作)

Intent i = new Intent(context, Twelve_Oclock_Alarm2.class); 

我试过很多东西,但我不能得到这个工作,一些帮助将是伟大的。

+0

看看了'ScheduledExecutorService':http://developer.android.com/reference/java/util/并发/ ScheduledExecutorService.html –

回答

0

使用AlarmManager您可以通过广播00:00(您所需的时间)和您的接收器中重置您的值sharedPreferences,不是很难做到。

,详细了解AlarmManager参阅以下内容:thisthat

Alarm Manager Example

+0

@dummy我跟着你说的Nitesh,但我不能得到onreceive方法被调用。我将编辑问题以显示所有代码。谢谢 –

+0

你能想到我添加的代码的任何解决方案吗?谢谢 –

+0

这里是你想要做的最简单的例子。按照它所说的去做。首先运行这样,然后尝试根据您的需要更改am.setRepeating http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/ – Nitesh