小编sta*_*ej2的帖子

Android RxJava 2 JUnit测试 - android.os.Looper中的getMainLooper没有模拟RuntimeException

我在尝试为正在使用的演示者运行JUnit测试时遇到RuntimeException observeOn(AndroidSchedulers.mainThread()).

由于它们是纯JUnit测试而不是Android检测测试,因此它们无法访问Android依赖项,导致我在执行测试时遇到以下错误:

java.lang.ExceptionInInitializerError
    at io.reactivex.android.schedulers.AndroidSchedulers$1.call(AndroidSchedulers.java:35)
    at io.reactivex.android.schedulers.AndroidSchedulers$1.call(AndroidSchedulers.java:33)
    at io.reactivex.android.plugins.RxAndroidPlugins.callRequireNonNull(RxAndroidPlugins.java:70)
    at io.reactivex.android.plugins.RxAndroidPlugins.initMainThreadScheduler(RxAndroidPlugins.java:40)
    at io.reactivex.android.schedulers.AndroidSchedulers.<clinit>(AndroidSchedulers.java:32)
    …
Caused by: java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.
    at android.os.Looper.getMainLooper(Looper.java)
    at io.reactivex.android.schedulers.AndroidSchedulers$MainHolder.<clinit>(AndroidSchedulers.java:29)
    ...


java.lang.NoClassDefFoundError: Could not initialize class io.reactivex.android.schedulers.AndroidSchedulers
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    …
Run Code Online (Sandbox Code Playgroud)

junit android unit-testing rx-java rx-java2

48
推荐指数
5
解决办法
2万
查看次数

Android - 将所有lint警告设置为错误,但某些错误除外

当我lint-baseline.xml引入不在文件中的新lint警告时,我试图使我的持续集成失败.我希望将所有lint警告视为错误(因此构建被中止),但是我想要一种方法来指定某些lint检查被视为信息或警告级别,以便它们仍然出现在lint结果中,但是不要不会导致构建中止.

这是一个基本上我想做的例子(除了这不起作用,如果存在任何非忽略的警告,构建将失败):

lintOptions {
    lintConfig file("lint.xml")
    baseline file("lint-baseline.xml")
    checkAllWarnings true
    warningsAsErrors true
    abortOnError true
    informational 'MissingTranslation, ...' // don't fail the build for these
}
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将所有lint检查视为错误,不包括某些错误?我考虑过手动将所有200多个lint检查设置为错误级别,但这不是将来的证据,因为每次添加新的lint检查时我都必须更新列表.

android lint android-lint android-studio android-gradle-plugin

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

如何将Unity集成到Android Activity中

这是我第一次使用Unity,我希望将它集成到现有的Android应用程序中.

根据我的阅读,您需要将Android项目打包到jar文件中.由于您无法在jar中包含资源文件夹,如何处理我的应用程序的所有资源?该应用程序还使用ActionBarSherlock和ViewPagerIndicator库,它们也拥有自己的资源.

我基本上只需要一种方法来点击Android上的按钮并弹出一个包含Unity内容的Activity.我希望应用程序的其余部分是原生Android代码.谢谢您的帮助!

java android unity-game-engine android-ndk

8
推荐指数
1
解决办法
9078
查看次数

在Android上调用方法的成本

我创建了一个只在一个地方调用的方法 - 来自onBindViewHolder()RecyclerView.它是一个逻辑的代码单元,我认为将该代码块提取到一个方法中可以提高可读性.但是,在代码审查期间,我被告知方法调用很昂贵,因此会对性能产生负面影响,我应该内联代码而不是将其放在单独的方法中.

我认为JVM或编译器会通过内联方法来优化此代码,但我不确定Android是否就是这种情况.我还没有真正找到关于新ART JVM做什么样的优化的具体信息.

在Android上调用一个如此昂贵的方法,我应该避免它,但是在方法可能被多次调用的地方以可读性为代价?另外,由于DEX方法的限制,正在创建这样的一次性使用方法吗?(此应用已使用multidex).

这个问题与其他类似的java问题没有重复,因为我特别询问Android上的性能,它有自己的特性.

java performance android jvm android-runtime

4
推荐指数
1
解决办法
230
查看次数

Android Studio中缺少Kotlin暂存文件输出

我正在使用Android Studio 3.2并尝试运行草稿文件,但找不到输出println的位置。

我的暂存文件的内容:

fun main(args: Array<String>) {
    println("Hello, world!")
}
Run Code Online (Sandbox Code Playgroud)

但是输出窗口缺少“您好,世界!”

在此处输入图片说明

我看错地方了吗?

android intellij-idea kotlin android-studio

3
推荐指数
1
解决办法
862
查看次数

如何取消从AsyncTask调用的HTTP GET请求?

我正在使用静态Web服务类来调用HTTP GET请求,并希望能够在用户按下后退按钮时取消请求/ AsyncTask.

我在doInBackground中定期检查isCancelled(),它适用于所有其他操作,但如果在用户回击时发生HTTP请求,则在收到结果或超时之前,任务不会被取消.

由于对WebServices.getDeviceId()的静态调用,我在HTTP客户端上没有句柄,所以我不能使用httpclient.getConnectionManager().shutdown(); 停止连接 有人对我如何解决这个问题有任何想法?

@Override
    protected Void doInBackground(Void... params) {
        if((mInstance.getDeviceId() == null) && !isCancelled()) {
            String deviceId = WebServices.getDeviceId();
        }

        return null;
    }
Run Code Online (Sandbox Code Playgroud)

android http android-asynctask

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