解决方案 »

  1.   

    具体出错流程我详细解释一下。
    首先,主程序正常运行,然后调用jni方法,jni方法返回给主程序值,此时主程序能收到返回值,依旧能正常运行。但调用结束后过不多久,主程序就无响应了。
    如果注释掉C++代码中的VerifyHash方法,就不会出问题。
    跟了好几天,除了知道VerifyHash方法出问题之外,完全找不到原因,不清楚为什么会主程序无响应。
      

  2.   

    计算量太大  导致ANR吧  
    你另起线程计算这些东西试试
      

  3.   

    还有 你在/data/anr/traces.txt里可以看到是什么引起了anr  看下log再分析问题可能在哪里
      

  4.   

    已经计算完成了,也会是计算量的问题么?tarces.txt这个导出来了,不过看不懂。。
      

  5.   

    在新线程中调用jni方法,阻塞主线程才会导致ANR。
      

  6.   

    已经计算完成了,也会是计算量的问题么?tarces.txt这个导出来了,不过看不懂。。
    额  和异常信息差不多的  你贴出来大家帮忙分析下吧
      

  7.   

    这个想过,不过主线程需要jni返回的信息才可以继续运行的,而且系统太庞大,要改造很困难。
      

  8.   

    一千多行。。都贴出来不现实啊。
    不过换了个方法解决了问题,VerifyHash方法里不使用C写的开源的sha1程序,反调用Java提供的系统Sha1 API,就不会出问题了。
    看来是C的sha1程序有问题,能正确算出值,可会导致主程序无响应,还是搞不明白原因。
      

  9.   

    一千多行。。都贴出来不现实啊。
    不过换了个方法解决了问题,VerifyHash方法里不使用C写的开源的sha1程序,反调用Java提供的系统Sha1 API,就不会出问题了。
    看来是C的sha1程序有问题,能正确算出值,可会导致主程序无响应,还是搞不明白原因。
    额  好吧  解决了就算了   不过anr信息即使是1000多行  你可以找出最近出的嘛   而且很好辨认  是不是你的应用出现的
      

  10.   

    感觉应该是内存回收 泄露问题,你看看那个C代码调用new 的地方都没有对应的delete ,反之用JAVA 的API它自己是有回收机制的