0
经过大量有关实施IntentServices和警报的研究,我已经想出了这个。我不知道这段代码究竟发生了什么,所以我需要帮助确切知道发生了什么。Android:警报和意图服务
public class MainActivity{
//....
public void onNewItemAdded(String[] _entry){
//...
\t Intent intent = new Intent(MainActivity.this, UpdateService.class);
\t startService(intent);
}
//....
}
public class AlarmReceiver extends BroadcastReceiver {
\t @Override
\t public void onReceive(Context context, Intent intent) {
\t \t // TODO Auto-generated method stub
\t \t Intent startIntent = new Intent(context, UpdateService.class);
\t \t context.startService(startIntent);
}
public static final String ACTION_REFRESH_ALARM = "com.a.b.ACTION_REFRESH_ALARM";
}
public class UpdateService extends IntentService{
//...
@Override
\t public void onCreate() {
\t \t super.onCreate();
\t \t alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
\t \t String ALARM_ACTION = AlarmReceiver.ACTION_REFRESH_ALARM;
\t \t Intent intentToFire = new Intent(ALARM_ACTION);
\t \t alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);
\t }
\t @Override
\t protected void onHandleIntent(Intent intent) {
\t \t Context context = getApplicationContext();
\t \t SharedPreferences prefs = PreferenceManager
\t \t \t \t .getDefaultSharedPreferences(context);
\t \t int updateFreq = Integer.parseInt(prefs.getString(
\t \t \t \t PreferencesActivity.PREF_UPDATE_FREQ, "60"));
\t \t boolean autoUpdateChecked = prefs.getBoolean(
\t \t \t \t PreferencesActivity.PREF_AUTO_UPDATE, false);
\t \t if (autoUpdateChecked) {
\t \t \t int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
\t \t \t long timeToRefresh = SystemClock.elapsedRealtime() + updateFreq
\t \t \t \t \t * 60 * 1000;
\t \t \t alarmManager.setInexactRepeating(alarmType, timeToRefresh,
\t \t \t \t \t updateFreq * 60 * 1000, alarmIntent);
\t \t }
\t \t else {
\t \t \t alarmManager.cancel(alarmIntent);
\t \t }
\t \t refreshKeywords();
\t }
}
我的目标是让refreshKeywords()方法被调用的每一分钟。另外,如果onNewItemAdded()方法被多次调用会发生什么?
对不起,如果这个问题很蠢,我是一个初学者。
我不没办法。在使用此实现时,refreshKeywords()方法在哪里? 这个函数是用来替代AlarmReceiver类的吗? – 2014-11-01 21:55:16
是的,你可以使用这个函数为你的AlarmReceiver – 2014-11-01 21:59:43
好吧,我应该如何修改onHandleIntent()方法?只有在SystemPreferences活动表明它已由用户启用时,我才需要将闹钟设置为自动刷新。我已经在onHandleIntent()方法中做了这些。 另外,这个ServiceRunningBackground()方法应该放在哪里以及应该在哪里调用? – 2014-11-02 13:24:59