我需要每天00:00重置存储在 sharedPreferences
中的值。我编写了一个进行重置的方法。到目前为止,我使用的是 countdowntimer
,当时会调用该方法。但是,如果应用程序关闭/被杀,我不知道计时器是否会继续工作。
如果没有,我该怎么办?因为我已经读过您不能使用 AlarmManager
调用方法,至少不容易。
非常感谢你给我的任何帮助。
我跳过了没有参与此操作的代码,所以你们不必阅读它。我想使用此警报,但从未调用 onRecieve 方法,因此我无法重置我需要的值。 请注意,现在警报设置为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);
我已经尝试了很多东西,但我不能让它起作用,一些帮助会很棒。