使用 API 26 调用 - API 23 Android 中的 transientExtras
Using API 26 call - transientExtras in API 23 Android
我正在尝试将 extras
添加到我的 JobInfo.Builder
支持 Android API 23 及更高版本。问题是当将 Bundle
添加到 builder
时,我需要做 builder.setTransientExtras
。
ComponentName serviceComponent = new ComponentName(context, RestApiJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(getUniqueJobId(), serviceComponent);
builder.setTransientExtras(RestApiJobFactory.save(jobItem);
这里的问题是 builder.setTransientExtras
仅在 API 26 及更高版本中受支持。而builder.setExtras
只支持PersistableBundle
。我需要它来支持 Bundle
,因为我的 Bundle
中有 Files
。
在 Android 23 中是否有支持 builder.setTransientExtras
以及 getTransientExtras
.
的解决方法
或者也许有一种方法可以将 Bundle 与 bundle.setExtras()
一起使用。
当在 JobInfo.Builder
上调用 build()
以获取持久作业时,使用 builder.setTransientExtras
可以抛出 IllegalArgumentException
。更安全地使用 PersistableBundle
并将包的内容限制为可持久类型,例如Long
、Double
、String
和嵌套 PersistableBundle
以及其他。如果您可以修改 RestApiJobFactory
class,而不是返回传递 File
对象的 Bundle
,请尝试将 File
位置存储为 String
.如果不能,请编写一个辅助方法将 Bundle
转换为 PeristableBundle
,并在此过程中提取 File
信息。有关示例,请参见此答案 。
持久作业的原则是将额外的东西减少到基本的持久类型,当作业本身是运行时,应该构造复杂的瞬态类型。
我正在尝试将 extras
添加到我的 JobInfo.Builder
支持 Android API 23 及更高版本。问题是当将 Bundle
添加到 builder
时,我需要做 builder.setTransientExtras
。
ComponentName serviceComponent = new ComponentName(context, RestApiJobService.class);
JobInfo.Builder builder = new JobInfo.Builder(getUniqueJobId(), serviceComponent);
builder.setTransientExtras(RestApiJobFactory.save(jobItem);
这里的问题是 builder.setTransientExtras
仅在 API 26 及更高版本中受支持。而builder.setExtras
只支持PersistableBundle
。我需要它来支持 Bundle
,因为我的 Bundle
中有 Files
。
在 Android 23 中是否有支持 builder.setTransientExtras
以及 getTransientExtras
.
或者也许有一种方法可以将 Bundle 与 bundle.setExtras()
一起使用。
当在 JobInfo.Builder
上调用 build()
以获取持久作业时,使用 builder.setTransientExtras
可以抛出 IllegalArgumentException
。更安全地使用 PersistableBundle
并将包的内容限制为可持久类型,例如Long
、Double
、String
和嵌套 PersistableBundle
以及其他。如果您可以修改 RestApiJobFactory
class,而不是返回传递 File
对象的 Bundle
,请尝试将 File
位置存储为 String
.如果不能,请编写一个辅助方法将 Bundle
转换为 PeristableBundle
,并在此过程中提取 File
信息。有关示例,请参见此答案
持久作业的原则是将额外的东西减少到基本的持久类型,当作业本身是运行时,应该构造复杂的瞬态类型。