如何在Android中正确安排意向服务

时间:2015-03-24 06:50:05

标签: android alarmmanager intentservice

我在应用程序上工作,我想在6小时的间隔内安排服务。我从主要活动中调用此方法。当此活动打开时,它会调用此方法并点击该服务。每当执行此方法时,我都不想执行它。在首次推出此服务之后,它应该在6小时左右后执行,而不是应用程序打开。是否有任何旗帜或我需要做的事情。

public static void scheduleHeartBeat(Context mContext) {
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mContext);
    Intent myIntent = new Intent(mContext, HearBeatService.class);
    PendingIntent pendingIntent = PendingIntent.getService(mContext, 0, myIntent, 0);
    AlarmManager alarmManager = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() , 6*60*60*1000, pendingIntent);
}


public class HearBeatService extends IntentService {

    public HearBeatService() {
        super("HearBeatService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d("HeartBeat", "Hey Testing!!!");
    }
}

MainActivity.java

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    .....
    scheduleHeartBeat(this);

    ...
}

提前致谢。

1 个答案:

答案 0 :(得分:0)

用户广播接收器。

  1. 创建扩展Intent服务类的类
  2. 创建broadcastreceiver类的类并调用Intent服务(来自step1)
  3. 为广播记录器创建待定意图(来自步骤2)
  4. 使用延迟6小时的警报管理器注册待处理的意图
  5. 不要忘记在Android清单中注册您的服务和接收器。