我是新架构组件WorkManager的新手,我通过Retrofit和RxJava进行API调用.
我的用例是从后端获取新帖子,然后显示通知,并更新小部件.
所以来自Worker类的doWork()方法中的代码可能看起来像这样.
@NonNull
@Override
public Result doWork() {
AppDependencies appDependencies = new AppDependencies((Application) getApplicationContext());
Repository repository = appDependencies.getRepository();
repository.getNewPosts()
.flatMap(newPosts -> repository.inserPosts(newPosts).toObservable())
.doOnError(Timber::e)
//if success - > return Result.SUCCESS,
// -> show notification
// -> update widget
// error-> return Result.Failure
.dontKnowWhatBestNextThing; //blocking or subscribing
//if we reached here then Retry
return Result.RETRY;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在Worker类中使用RxJava代码的正确方法是什么,因为doWork()方法有一个返回值,所以我必须使Rx代码同步.
如果我使用非阻塞Rx方法,我怎样才能返回值(成功 - 失败 - 重试)
android rx-java2 android-architecture-components android-jetpack android-workmanager
在一个大项目中,虽然以前的开发人员已经工作过,但您可以找到gradle
根本没有任何用途的依赖项。
这些依赖性会影响apk
大小吗?以及依赖关系如何影响apk
大小,如果您只使用库中的一种方法,这是否意味着附加到您的apk
.
我有这个代码,当单击 Adapter 中的 viewHolder 项目时,我会在其中显示 Dialog Fragment
SpecialRequestNotFoundBottomSheetDialog {
requestItem?.specialRequestEntity?.id?.let { id -> onCancelReasonsSelected(id, it) }
}.show(itemView.context as AppCompatActivity).supportFragmentManager)
Run Code Online (Sandbox Code Playgroud)
最近我正在迁移到 Hilt 并且我得到了类转换异常,看起来像 Hilt 包装了上下文,我无法让父Activity获得所需的FragmentManager来显示 Dialog
我有一种情况,我需要两个改造服务,每个服务都有其业务实现。
@Provides
@Singleton
@Named("defaultMulhimService")
MulhimService provideMulhimService() {
return MulhimService.Creator.newMulhimService();
}
@Provides
@Singleton
@Named("MulhimServiceWithCache")
MulhimService providesMulhimServiceWithCache(){
return MulhimService.Creator.newMulhimServiceWithCache(mApplication);
}
Run Code Online (Sandbox Code Playgroud)
我已经看过这个答案,它建议使用 @Named 注释来区分模块中的多个实例,但我不知道如何注入它们。
下面的方法工作正常,但我找不到使用相同方法打印反转数组的方法.我尝试了 - 每个循环但它打印三个数组而不仅仅是一个.例如,如果输入:
大小5,开始= 1,结束= 5,arr [] = {1,2,3,4,5}
输出:
543215432154321
应该是正确的输出
54321
这是代码:
static void reverse(int[] arr, int start, int end) {
if (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
reverse(arr, start + 1, end - 1);
}
for (int pr : arr) {
System.out.print(pr);
}
}
Run Code Online (Sandbox Code Playgroud)