iT邦幫忙

DAY 28
0

Android 探索之備忘錄系列 第 28

Android 探索之備忘錄 [Day28-JobScheduler]

  • 分享至 

  • xImage
  •  

JobScheduler是 Android Lollipop開始有的API,
目的是讓app在運作上可以和系統的步調更一致
以達到省電的效果(例如: 系統準備要休眠的時候, 剛好你的app開始要做事情而導致系統無法正常休眠)

根據SDK官網, 可能的使用時機有以下幾種

  1. app在運作的時候不需要讓使用者知道的情況(也就是背景運作)
  2. 當使用者正在充電的時候喚起app做事
  3. 當有網路連線的時候app才需要做事
  4. 當app有一整套的工作並且是規律執行的時候

並且可以把工作排入以下時機

  1. 充電時
  2. 連至網路時
  3. 裝置閒置時
  4. 限定某個時間結束前再完成即可

先看一下sample code

int mJobId = 1001;
ComponentName mServiceComponent= new ComponentName("com.abc.app", "com.abc.app.MyService");
JobInfo uploadTask = new JobInfo.Builder(mJobId,
                                         mServiceComponent )
        .setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) 
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

在sample code, 每一個工作都必須JobInfo物件為單位,
透過JobInfo.Builder建立, 排入JobScheduler, 之後就交給系統執行

需要注意的是, 如果裝置已經充電2分鐘以上, 並且電量是足夠的狀態
就會把所有還在scheduler裡ready的job拿出來執行


上一篇
Android 探索之備忘錄 [Day27-LOCAL_MODULE_CLASS]
下一篇
Android 探索之備忘錄 [Day29-startLockTask]
系列文
Android 探索之備忘錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言