我需要重置每天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);
我试过很多东西,但我不能得到这个工作,一些帮助将是伟大的。
看看了'ScheduledExecutorService':http://developer.android.com/reference/java/util/并发/ ScheduledExecutorService.html –