gpt4 book ai didi

android - Evernote Android-Job 定期作业的数量不断增加

转载 作者:行者123 更新时间:2023-11-29 15:01:40 25 4
gpt4 key购买 nike

当应用程序更新时,我的设备(模拟器和真实设备)上的周期性作业数量似乎在不断增加。无论我是使用 Android Studio 安装还是首先创建一个签名的 APK,然后通过 adb (adb install -r name.apk) 进行更新都没有关系。

使用命令“adb shell dumpsys jobscheduler”产生以下结果:

Registered jobs:
108..:[ComponentInfo{com.google.android.apps.maps/com.google.android.apps.gmm.offline.OfflineAutoUpdateJobService},jId=2131624035,u0,R=(23:32:44,47:32:44),N=1,C=true,I=true,F=0,P=true,ANI=true]
148..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=61,u0,R=(07:54,17:54),N=0,C=false,I=false,F=0,P=false,ANI=true]
160..:[ComponentInfo{android/com.android.server.backup.FullBackupJob},jId=20536,u0,R=(none,none),N=2,C=true,I=true,F=0,P=false,ANI=true]
192..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=50,u0,R=(1:30:00,1:40:00),N=0,C=false,I=false,F=0,P=false,ANI=true]
206..:[ComponentInfo{android/com.android.server.os.BackgroundCompactionService},jId=802,u0,R=(50:21,none),N=0,C=false,I=true,F=0,P=false,ANI=true]
215..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=60,u0,R=(37:54,47:54),N=0,C=false,I=false,F=0,P=false,ANI=true]
262..:[ComponentInfo{com.android.providers.downloads/com.android.providers.downloads.DownloadIdleService},jId=1,u0,R=(-20:38,3:25:13),N=0,C=true,I=true,F=0,P=true,ANI=true]
291..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=9,u0,R=(12:47,22:47),N=0,C=false,I=false,F=0,P=false,ANI=true]
312..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=37,u0,R=(12:57,22:57),N=0,C=false,I=false,F=0,P=false,ANI=true]
456..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=38,u0,R=(1:22:56,1:32:56),N=0,C=false,I=false,F=0,P=true,ANI=true]
540..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=39,u0,R=(22:46,32:46),N=0,C=false,I=false,F=0,P=true,ANI=true]
577..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=57,u0,R=(03:34,13:34),N=0,C=false,I=false,F=0,P=false,ANI=true]
639..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=8,u0,R=(22:47,32:47),N=0,C=false,I=false,F=0,P=true,ANI=true]
663..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=56,u0,R=(33:34,43:34),N=0,C=false,I=false,F=0,P=false,ANI=true]
862..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=43,u0,R=(23:11,33:11),N=0,C=false,I=false,F=0,P=true,ANI=true]
864..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=32,u0,R=(22:56,32:56),N=0,C=false,I=false,F=0,P=true,ANI=true]
984..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=42,u0,R=(1:22:46,1:32:46),N=0,C=false,I=false,F=0,P=true,ANI=true]
102..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=49,u0,R=(00:00,10:00),N=0,C=false,I=false,F=0,P=false,ANI=true]
104..:[ComponentInfo{android/com.android.server.pm.BackgroundDexOptService},jId=800,u0,R=(-20:38,none),N=0,C=true,I=true,F=0,P=false,ANI=true]
114..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=44,u0,R=(23:11,33:11),N=0,C=false,I=false,F=0,P=true,ANI=true]
124..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=53,u0,R=(19:50,29:50),N=0,C=false,I=false,F=0,P=false,ANI=true]
124..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=33,u0,R=(12:57,22:57),N=0,C=false,I=false,F=0,P=false,ANI=true]
126..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=62,u0,R=(1:37:54,1:47:54),N=0,C=false,I=false,F=0,P=false,ANI=true]
130..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=41,u0,R=(12:47,22:47),N=0,C=false,I=false,F=0,P=false,ANI=true]
131..:[ComponentInfo{android/com.android.server.backup.KeyValueBackupJob},jId=20537,u0,R=(3:42:43,23:39:25),N=1,C=true,I=false,F=0,P=false,ANI=true]
161..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=51,u0,R=(29:50,39:50),N=0,C=false,I=false,F=0,P=false,ANI=true]
162..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=36,u0,R=(22:56,32:56),N=0,C=false,I=false,F=0,P=true,ANI=true]
165..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=52,u0,R=(29:50,39:50),N=0,C=false,I=false,F=0,P=false,ANI=true]
170..:[ComponentInfo{com.google.android.apps.maps/com.google.android.apps.gmm.offline.OfflineAutoUpdateJobService},jId=2131624034,u0,R=(17:39:42,18:09:42),N=1,C=true,I=true,F=0,P=true,ANI=true]
171..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=54,u0,R=(1:29:50,1:39:50),N=0,C=false,I=false,F=0,P=false,ANI=true]
175..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=47,u0,R=(30:00,40:00),N=0,C=false,I=false,F=0,P=false,ANI=true]
197..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=58,u0,R=(1:33:34,1:43:34),N=0,C=false,I=false,F=0,P=false,ANI=true]
208..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=34,u0,R=(1:22:56,1:32:56),N=0,C=false,I=false,F=0,P=true,ANI=true]
209..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=10,u0,R=(1:22:57,1:32:57),N=0,C=false,I=false,F=0,P=true,ANI=true]
213..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=48,u0,R=(30:00,40:00),N=0,C=false,I=false,F=0,P=false,ANI=true]
215..:[ComponentInfo{android/com.android.server.MountServiceIdler},jId=808,u0,R=(17:09:17,none),N=0,C=true,I=true,F=0,P=false,ANI=true]
218..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=55,u0,R=(33:34,43:34),N=0,C=false,I=false,F=0,P=false,ANI=true]
225..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=31,u0,R=(22:57,32:57),N=0,C=false,I=false,F=0,P=true,ANI=true]
242..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=35,u0,R=(22:57,32:57),N=0,C=false,I=false,F=0,P=true,ANI=true]
252..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=40,u0,R=(22:46,32:46),N=0,C=false,I=false,F=0,P=true,ANI=true]
255..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=59,u0,R=(37:54,47:54),N=0,C=false,I=false,F=0,P=false,ANI=true]
258..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=45,u0,R=(19:50,29:50),N=0,C=false,I=false,F=0,P=false,ANI=true]
266..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=46,u0,R=(1:23:11,1:33:11),N=0,C=false,I=false,F=0,P=true,ANI=true]
268..:[ComponentInfo{my.app/com.evernote.android.job.v21.PlatformJobService},jId=7,u0,R=(22:47,32:47),N=0,C=false,I=false,F=0,P=true,ANI=true]

而且我在启动应用程序时只安排了 4 个不同的作业(在“MyApp extends Application”类的实例中启动。

此外:即使我指定定期作业不应在重新启动之间持续存在,重新启动后作业仍然存在。(是的,我的 list 中有“<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />”)

这是我如何安排定期作业的示例:

public static void schedulePeriodicJob() {
int jobId = new JobRequest.Builder(TSMUSyncJob.TAG_TSMU_SYNC_PERIODIC_JOB)
.setPeriodic(TimeUnit.MINUTES.toMillis(120), TimeUnit.MINUTES.toMillis(10))
//.setPersisted(true)
.build()
.schedule();
Log.i(TAG, "Persisted job scheduled to run every 120 minutes with 10 minutes flex. Job id: " + String.valueOf(jobId));
}

有什么想法吗?谢谢,欧维

最佳答案

持久性周期性作业将永远保留。每次您安排它们时,即使使用相同的标签,也会创建一个新的工作请求。要防止这种情况发生,请在 JobRequest.Builder 上调用 setUpdateCurrent(true):

JobRequest.Builder(TSMUSyncJob.TAG_TSMU_SYNC_PERIODIC_JOB)
.setPeriodic(TimeUnit.MINUTES.toMillis(120), TimeUnit.MINUTES.toMillis(10))
.setUpdateCurrent(true)
.setPersisted(true)
.build()
.schedule()

setUpdateCurrent(true) 在创建新作业请求之前取消所有现有作业请求。如果应保留旧作业请求而不创建新作业请求,请在调度之前检查是否已存在具有相同标签的作业请求:

if (jobManager.getAllJobRequestsForTag(TAG_TSMU_SYNC_PERIODIC_JOB).isEmpty()) {
new JobRequest.Builder(...).schedule();
}

关于android - Evernote Android-Job 定期作业的数量不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43842479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com