0

毎日午後 9 時にサービスを実行して、何らかの作業を行いたいと考えています。

GcmNetworkManager クラスを使用していますが、PeriodicTask に正確な時刻と日付を与える方法がわかりません。

これは私の GcmTaskService クラスです

public class Sc extends GcmTaskService {
@Override
public int onRunTask(TaskParams taskParams) {
    Log.i("onRunTask: " + taskParams.getTag(), "gcm task");

    return GcmNetworkManager.RESULT_SUCCESS;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Log.i("onStartCommand", "gcm task");

    return super.onStartCommand(intent, flags, startId);

}
}

マニフェスト宣言

<service
        android:name=".Sc"
        android:exported="true"
        android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE">
        <intent-filter>
            <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
        </intent-filter>
    </service>

これが私がタスクを呼び出す方法です

long periodSecs = 30L; // the task should be executed every 30 seconds
    long flexSecs = 15L; // the task can run as early as -15 seconds from the scheduled time

    String tag = "myScan|1";

    PeriodicTask periodic = new PeriodicTask.Builder()
            .setService(Sc.class)
            .setPeriod(periodSecs)
            .setFlex(flexSecs)
            .setTag(tag)
            .setPersisted(false)
            .setRequiredNetwork(com.google.android.gms.gcm.Task.NETWORK_STATE_ANY)
            .setRequiresCharging(false)
            .setUpdateCurrent(true)
            .build();

    GcmNetworkManager.getInstance(this).schedule(periodic);

30秒ごとに完全に正常に動作しています。しかし、実行する正確な時間を与える方法。

4

1 に答える 1