小编Zak*_*rdi的帖子

如何使用java中的反射将字段强制转换为特定的类?

我使用反射将类的类的所有类的成员变量Card放入ArrayList<Card>实例中.我如何完成最后一部分(见下面的注释行)?

ArrayList<Card> cardList = new ArrayList<Card>();
Field[] fields = this.getClass().getDeclaredFields();

for (Field field : fields) {
   if (field.getType() == Card.class) {
      //how do I convert 'field' to a 'Card' object and add it to the 'cardList' here?
Run Code Online (Sandbox Code Playgroud)

java reflection

13
推荐指数
2
解决办法
1万
查看次数

11
推荐指数
1
解决办法
1627
查看次数

SyncAdapter与JobScheduler

排除JobScheduler仅支持API> 21 的事实- JobSchedulers旨在完全取代SyncAdapters?或者SyncAdapter包含缺少的任何功能JobScheduler

我的用例是每隔几个小时同步一次RSS提要.这对于JobScheduler来说是可行的 - 对吗?

android android-syncadapter android-5.0-lollipop android-jobscheduler

11
推荐指数
2
解决办法
3460
查看次数

如何将lateinit Kotlin属性设置为null

下面的类有一个非常独特的生命周期,这需要我暂时清空lateinit属性

class SalesController : BaseController, SalesView {
    @Inject lateinit var viewBinder: SalesController.ViewBinder
    @Inject lateinit var renderer: SalesRenderer
    @Inject lateinit var presenter: SalesPresenter
    lateinit private var component: SalesScreenComponent

    override var state = SalesScreen.State.INITIAL  //only property that I want to survive config changes

    fun onCreateView(): View {  /** lateinit variables are set here */ }
    fun onDestroyView() {
         //lateinit variables need to be dereferences here, or we have a memory leak 
         renderer = null!! //here's the problem: throws exception bc …
Run Code Online (Sandbox Code Playgroud)

kotlin conductor kotlin-null-safety

11
推荐指数
1
解决办法
3556
查看次数

如何用proguard定位kotlin`内部`类?

我想对任何标有kotlin internal可见性修饰符的类进行预测(混淆).

Kotlin internal类在JVM上是公共的,因此它们在Java源代码中是可见的和可用的.我不希望这些类被使用或出现在自动完成中,所以我想对它们进行模糊处理以阻止它们的使用.

我可以将什么样的规则适用于目标internal类?

proguard kotlin dexguard android-proguard

11
推荐指数
1
解决办法
489
查看次数

我什么时候应该使用“Dispatchers.Unconfined”和“EmptyCoroutineContext”?

什么时候适合使用Dispatchers.Unconfinedvs EmptyCoroutineContext

我的用例是我想创建一个用于拦截网络调用的 API。我想提供一个可选参数来控制在哪个调度程序上执行拦截。这个参数的默认值应该是Dispatchers.Unconfined还是EmptyCoroutineContext

kotlin-coroutines

11
推荐指数
1
解决办法
8129
查看次数

你如何获得涟漪效应来延伸过去的视界?

触摸涟漪效应在这里超越了界限.这是怎么做到的?

在此输入图像描述

编辑:我很好,仅在5.0+上工作.

android android-layout android-imageview android-view

10
推荐指数
2
解决办法
2820
查看次数

我必须重新启动IDE才能运行测试

在IDE中直接运行单个测试时Android Studio 2.2的奇怪错误 - 我要么"没有找到测试",要么运行我之前编译的测试.

例:

@Test
fun testyTest() {
}
Run Code Online (Sandbox Code Playgroud)

我将创建此测试,并获得"未找到测试".所以我重新启动,找到了测试!显然,上述测试通过,因为它是空的.接下来,我希望我的测试失败.所以我手动抛出异常并在下面添加一行代码.

@Test
fun testyTest() {
    throw RuntimeException()
}
Run Code Online (Sandbox Code Playgroud)

现在我重新编译,这个测试也通过,因为IntelliJ由于某种原因缓存了之前的测试并重新运行.要使此测试正确失败 - 我必须重新启动IDE.

有谁知道发生了什么?注意 - 我在这个项目中使用Kotlin非常重要.

编辑2:这是一个src/test/javaAndroid 项目中的JVM测试(非android ).

编辑:这是一个完整的测试课程

package com.example.zak

import org.junit.Before
import org.junit.Test


class ExampleTest {

    @Before
    fun setUp() {

    }

    @Test
    fun testyTest() {
        //throw RuntimeException()
    }
}
Run Code Online (Sandbox Code Playgroud)

kotlin android-testing android-studio

9
推荐指数
1
解决办法
2705
查看次数

Android:Realm.getInstance(context)返回已经关闭的领域实例

Realm.getInstance(context)将很少返回已经关闭的领域实例.这怎么可能?

我使用Realm和RxJava,按照https://realm.io/news/using-realm-with-rxjava/

特别是,这种方法抛出了 IllegalStateException: This Realm instance has already been closed, making it unusable.

@Override
    public void call(final Subscriber<? super RealmList<T>> subscriber) {
        final Realm realm = Realm.getInstance(context);
        subscriber.add(Subscriptions.create(new Action0() {
            @Override
            public void call() {
                try {
                    realm.close();
                } catch (RealmException ex) {
                    subscriber.onError(ex);
                }
            }
        }));

        RealmList<T> object;
        realm.beginTransaction(); //THROWS EXCEPTION

        //...
}
Run Code Online (Sandbox Code Playgroud)

如果我注释掉这个realm.close();问题,没问题.虽然我认为这会导致本机内存泄漏.

我最好的猜测是,为什么会发生这种情况,正在对这个方法进行多次调用,如果这些方法调用完美排列,那么可以检索已经关闭的领域实例?

编辑:通过使用Schedulers.io(),我得到了很多Calling close() on a Realm that is already closed警告.我的猜测是,在我完成使用该.io()线程之后,realm实例会自动关闭.不知道为什么会发生这种情况.

EDIT2:通过切换到使用Schedulers.newThread()而不是Schedulers.io() …

android realm rx-java

6
推荐指数
1
解决办法
3265
查看次数

如何在纯 Java gradle 模块中模拟 Android 的 productFlavors?

我需要三种口味:

  • fake
  • staging
  • prod

fake将提供诸如FakeUser, 之类的类FakeUserDb- 这些类不会编译到prod风味中,这一点非常重要。

prod并且staging完全相同,除了我需要将不同的编译String urlprodvs 中staging

因此,我需要创建一个real既可以继承prod又可以staging继承的“抽象”风味。

这可以通过 android gradle 插件轻松完成,但我如何在纯 Java gradle 模块中做到这一点?

java android gradle android-gradle-plugin

6
推荐指数
1
解决办法
771
查看次数