1

以前IntentService用于通过 AlramManager 触发后台服务。现在我将触发后台进程更改IntentServiceJobIntentService从服务器获取数据。在某些JobIntentService不触发的设备中,只有在打开应用程序后才会触发。

设置警报管理器

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

PendingIntent pi;
AlarmManager am;

pi = PendingIntent.getBroadcast(getActivity(), requestCode, new Intent(getActivity(), PendingCampaignReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT);

am = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);

广播接收器类

public class PendingCampaignReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        PendingCampaign.enqueueWork(context, intent);
    }
}

<receiver
        android:name=".broadcast.receiver.PendingCampaignReceiver"
        android:enabled="true"
        android:process=":remote" />

JobIntentService 类

public class PendingCampaign extends JobIntentService {

 public static void enqueueWork(Context context, Intent intent) {
    enqueueWork(context, PendingCampaign.class, PENDING_CAMPAIGN_JOB_ID, intent);
 }

  @Override
 protected void onHandleWork(@NonNull Intent intent) {

    //am doing my API calling here

 }
}

<service
        android:name=".services.PendingCampaign"
        android:permission="android.permission.BIND_JOB_SERVICE" />

我的编码有什么问题吗?帮我解决问题。

4

0 回答 0