相关疑难解决方法(0)

了解Android紧密循环/旋转暂停错误

我正在开发一款关于android的游戏,"Space RPG" - 目前只在大多数Galaxy S4和HTC Ones上看到这个错误.这都是Java.

游戏将停止,当我尝试调试进程并暂停有问题的线程时,它将不会挂起,并且会发生旋转挂起错误.线程转储让我看到它在一个特定的while循环中,它正在采取所需的"结束位置"并在不断增加的距离步骤向后迭代以找到"起始位置".

这是事情变得烦人的地方.我可以验证循环无法无限运行,即使条件是while(true),在我的break被调用之前它不可能运行超过200次迭代(这个断言由正在运行的代码备份)我试过的每一部电话).

为了帮助我缓解这个问题,我在循环中添加了一个简单的递增变量,如果它超过1000,它会记录一些东西,所以我可以看到DID运行太多次,以防万一设置了一些变量严重或某事. 当此计数器代码存在时,不会发生崩溃/挂起.我也没有看到任何日志表明它跑了1000多次.

如果我删除此计数器,则每次播放5-10秒后都会发生挂起[其中while循环可能会运行10次,尽管有所不同].

因此,我的问题是,到底发生了什么?:P为什么这些较新的手机(但似乎没有旧款手机)在执行有效工作的循环中存在问题,并且在没有增量变量的情况下不会持续很长时间.线程如何可能在该循环中停止,以及如何使用额外的计数器变量来解决问题?这项工作是在opengl渲染线程上完成的,如果这很重要的话.

我有关于大多数S4发生这种情况的报告,但至少有一个S4在那里没有发生.我今天使用的那个正在发生.这让我想知道它是否可能与特定的android,java,dalvik或手机上的其他东西有关,但遗憾的是我没有从S4工作的任何细节.

非常感谢任何有关此类内容的帮助,指导,想法或进一步阅读.

float vel = 1.0f; // final velocity is 1. We are working backwards to find out what the starting velocity will need to be.
int i = 0;
double xmath = Math.sin(rot* (Math.PI/180.0f)); // component of velocity for x,y direction based on rotation
double ymath =  Math.cos(rot* (Math.PI/180.0f));
while (true) {
        /* with this section uncommented, the stall never happens...
         ++i;
        if (i>1000) {
            // Something …
Run Code Online (Sandbox Code Playgroud)

java android loops dalvik

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

基于 Android-Java 的应用程序本机崩溃?

背景

我的应用程序有 100% 用 Ja​​va 编写的代码,它不需要进行任何繁重的操作。

应用程序本身仅使用下一个库,但它们都没有 JNI 代码:

  • 动作条夏洛克
  • 谷歌播放服务_lib

问题

今天我收到一个奇怪的崩溃报告,它没有显示任何正常的异常信息。

该报告是通过装有 Android 4.4 的“Galaxy S5 (klte)”设备发送的。

这是崩溃报告的标题:

Native crash at /dev/ashmem/dalvik-jit-code-cache in
/dev/ashmem/dalvik-jit-code-cache (deleted)
Run Code Online (Sandbox Code Playgroud)

这是崩溃内容:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 
Build fingerprint: 'samsung/kltexx/klte:4.4.2/KOT49H/G900FXXU1ANE2:user/release-keys' 
Revision: '14' 
pid: 11904, tid: 11904, name: .lb.app_manager >>> com.lb.app_manager <<< 
signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 6d7b97cc SOME_NUMBERS

backtrace:
#00 pc 00026a56 /dev/ashmem/dalvik-jit-code-cache (deleted)
#01 pc 00026a55 /dev/ashmem/dalvik-jit-code-cache (deleted) …
Run Code Online (Sandbox Code Playgroud)

java java-native-interface android crash-reports dalvik

5
推荐指数
0
解决办法
1414
查看次数

由于"进程崩溃",仪表运行失败.经过长时间的测试执行

我有大约700个测试要执行.当我全部运行时,出现了崩溃

"由于'进程崩溃,仪表运行失败.'"检查设备logcat以获取详细信息.测试运行失败:由于"进程崩溃",仪表运行失败.

经过一段时间的执行,大约10分钟和~360-370th执行测试.

Logcat不包含有关此崩溃的任何信息

它适用于从Android Studio,cmd(在PC和Mac上)运行.使用的设备 - Android 4.1.1上的Samsung S3

build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 18
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.xxx.yyy"
        minSdkVersion 9
        targetSdkVersion 18

        testApplicationId "com.xxx.zzz"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

    project.gradle.taskGraph.whenReady {
        connectedAndroidTestDebug  {
            ignoreFailures = true
        }
    }
}


repositories {
    // The …
Run Code Online (Sandbox Code Playgroud)

crash android automated-tests unit-testing android-instrumentation

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