小编Sla*_*ava的帖子

Android Studio - 应用程序冻结而不是崩溃

我有一个奇怪的问题.我的应用程序永远不会崩溃..它会冻结我的手机.即使我抛出异常它也没有错误日志冻结.

它肯定不是设备问题(在3个设备上试过)而不是应用程序问题(试过几个测试项目).确定它的Android Studio问题,因为它在Eclipse环境中正常工作.

我正在使用Android Studio 1.2.2和Mac OSX.

编辑:其他几个用户报告的同一问题,没有给出其他具体信息.应用程序冻结,日志仅显示"Android VM关闭".不存在Crashlytics,但Google Analytics存在,ga_reportUncaughtExceptions = false

Saket在下面的评论中报道:

这发生在我身边,因为我通过调用Thread.setDefaultUncaughtExceptionHandler()注册了错误配置的UncaughtExceptionHandler

所以只需找到uncaughtExceptionHandler项目中的所有字符串并尝试评论/删除它们.

crash macos android android-studio

6
推荐指数
0
解决办法
1560
查看次数

RxJava默认错误处理程序

抱歉,是否有可能在RxJava中设置默认错误处理程序?

例如,我在Utils.kt文件中的一些代码:

fun BaseFragment.callGallery(view: View){
    view.clicks().bindToLifecycle(this).subscribe {
        RxPaparazzo.takeImage(this)
        .usingGallery()
        .subscribe { response ->
            throw RuntimeException("Where is this exception from?")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在堆栈跟踪中,没有Utils.kt关于我的任何文件的任何提示.

我知道我可以在每个订阅者中设置onError.代码如下:

.subscribe ({ response ->
    ....
}, { it.printStackTrace() })
Run Code Online (Sandbox Code Playgroud)

但我更愿意为所有订阅者设置一个默认的onError.我该怎么做?

堆栈跟踪:

05-07 12:11:48.246 10966-10966/ru.egslava.rxfluxtest E/AndroidRuntime: FATAL EXCEPTION: main
 Process: ru.egslava.rxfluxtest, PID: 10966
 java.lang.RuntimeException: Unable to destroy activity {ru.egslava.rxfluxtest/rx_activity_result.HolderActivity}: rx.exceptions.OnErrorNotImplementedException: Where is this exception from?
     at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3831)
     at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3849)
     at android.app.ActivityThread.-wrap5(ActivityThread.java)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:148)
     at android.app.ActivityThread.main(ActivityThread.java:5417)
     at java.lang.reflect.Method.invoke(Native Method)
     at …
Run Code Online (Sandbox Code Playgroud)

java android exception-handling kotlin rx-java

6
推荐指数
2
解决办法
2730
查看次数

无法在 API <21 上运行 UI 测试

我有一个类似 hello-world 的项目,但我无法对其进行测试!之前,我在另一台计算机上开发这个项目,我可以运行测试。

现在,我搬到另一台电脑上,然后...

  1. 如果我尝试从 Android Studio 运行测试,则 IDE 会打印出:
Unable to determine application id: com.android.tools.idea.run.ApkProvisionException: Running Instrumented Tests for Dynamic Features is currently not supported on API < 21.`
Run Code Online (Sandbox Code Playgroud)
  1. 如果我尝试运行: ./gradlew connectedAndroidTest

然后我有:

com.android.build.gradle.internal.testing.ConnectedDevice > runTests[GT-I9300I - 4.4.4] FAILED 
        com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
                at com.android.build.gradle.internal.testing.ConnectedDevice.installPackage(ConnectedDevice.java:132)
[no message defined]
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES
        at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1006)
        at com.android.ide.common.workers.ExecutorServiceAdapter.await(ExecutorServiceAdapter.kt:102)
        at com.android.build.gradle.internal.testing.BaseTestRunner.runTests(BaseTestRunner.java:201)
        at com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask.lambda$doTaskAction$2(DeviceProviderInstrumentTestTask.java:201)
        at com.android.builder.testing.api.DeviceProvider.use(DeviceProvider.java:53)
        at com.android.build.gradle.internal.tasks.DeviceProviderInstrumentTestTask.doTaskAction(DeviceProviderInstrumentTestTask.java:191)
        at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:74)
        at com.android.build.gradle.internal.tasks.NonIncrementalTask$taskAction$$inlined$recordTaskAction$1.invoke(AndroidVariantTask.kt:34)
        at com.android.build.gradle.internal.tasks.Blocks.recordSpan(Blocks.java:91)
        at com.android.build.gradle.internal.tasks.NonIncrementalTask.taskAction(NonIncrementalTask.kt:57)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at …
Run Code Online (Sandbox Code Playgroud)

testing android gradle android-gradle-plugin android-espresso

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

斯卡拉。具有简短语法的嵌套 lambda 的参数

请原谅我的英语 :( 让我们通过例子来解释我的问题。我们有一个数组a

    var a = Array(1,1,1,1,2)
Run Code Online (Sandbox Code Playgroud)

我们可以:

  1. 过滤器a

    a.filter( _ < 2 )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 计算 a 中的一些元素:

    a.count (_ < 2)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获取集合中的独特元素:

    a.filter { i =>
        a.count(_ == i) == 1
    }
    
    Run Code Online (Sandbox Code Playgroud)

问题是:如何在不引入变量 i 的情况下执行第三个子句?是否有可能写出类似的东西:

    a.filter ( a.count ( _ == __) == 1 )
Run Code Online (Sandbox Code Playgroud)

我知道我可以写这个(而且它仍然很短):

    a.filter { i => a.count(_ == i) == 1 }
Run Code Online (Sandbox Code Playgroud)

但我只是对答案感兴趣。

lambda functional-programming scala

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

无法调用在父作用域中分配的局部变量

blah = 10
def what?
  "#{blah}"
end
puts what?
# =>
# NameError: undefined local variable or method `blah' for main:Object
#     from (irb):3:in `what?'
#     from (irb):5
#     from E:/RailsInstaller/Ruby1.9.3/bin/irb:12:in `<main>`
Run Code Online (Sandbox Code Playgroud)

为什么?正确的写法是什么?我应该在局部范围内复制一个变量还是有更好的变体?

ruby scope local-variables

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