首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoClassDefFoundError: android.app.ANRManagerProxy

NoClassDefFoundError: android.app.ANRManagerProxy
EN

Stack Overflow用户
提问于 2015-03-26 21:56:49
回答 2查看 2.8K关注 0票数 25

有人知道为什么会这样吗?我看到我的应用程序报告了这起事故,但我不知道它是什么。

代码语言:javascript
复制
java.lang.NoClassDefFoundError: android.app.ANRManagerProxy

Thread: Binder_3, Exception: java.lang.NoClassDefFoundError: android.app.ANRManagerProxy 
at android.app.ANRManagerNative.asInterface(ANRManagerNative.java:30) 
at android.app.ANRManagerNative$1.create(ANRManagerNative.java:94) 
at android.app.ANRManagerNative$1.create(ANRManagerNative.java:88)
at android.util.Singleton.get(Singleton.java:34) at android.app.ANRManagerNative.getDefault(ANRManagerNative.java:37) 
at android.os.MessageLogger.dump(MessageLogger.java:253) 
at android.app.ANRAppManager.dumpMessageHistory(SourceFile:38) 
at android.app.ActivityThread$ApplicationThread.dumpMessageHistory(ActivityThread.java:1176) 
at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:609) 
at android.os.Binder.execTransact(Binder.java:351) 
at dalvik.system.NativeStart.run(Native Method)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-13 05:14:28

这个错误可以在一小群设备上看到(我没有列表,但它们往往是没有名字的品牌),这些设备的固件开发人员出于未知的原因,将ANRManagerProxy从设备框架中删除(我通过查找固件并自己对其进行反编译来证实这一点)。

您所能做的最好是查找任何可能的代码,这些代码可能会锁定线程并导致设备变得没有响应性,并尝试使用AsyncTask或类似的方法异步运行代码并避免ANR。所讨论的设备总是低端的,因此您的代码将花费更长的时间来运行,并且有更大的机会导致这种情况发生。

我建议Hugo作为调试方法执行时间的一个很好的库,以便将您的注意力集中在花费最多时间的地方。这将有助于改善您的代码为所有用户,以及减少崩溃的风险,在问题。

票数 13
EN

Stack Overflow用户

发布于 2016-03-11 12:05:29

会发生这种事,因为

  • 您的应用程序 id在主(GUI)线程中做一些繁重的工作

  • 目标设备破坏了固件

下面是一个设备列表,我在这里更频繁地体验了bug -,所以不仅仅是低端设备,小心您会忽略它:-)

联想A316i,N5i,V769M,G3 orro,V5,G3,X-2,F1 906,Z350,V10,G910,EVOLVEO StrongPhone D2,A70C,G9006,V13,C3000,n968,SM-T 322,H9503,GT-H 9503,C3000,C3000,联想TP-6000,Galaxy SM-T700C .

你唯一能做的就是让你的应用程序响应。这样做的最佳方法是在开发和测试严格模式时使用,即这样做:

代码语言:javascript
复制
public void onCreate() {
    if (DEVELOPER_MODE) {
        StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
             .detectDiskReads()
             .detectDiskWrites()
             .detectNetwork()   // or .detectAll() for all detectable problems
             .penaltyLog()
             .build());
        StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
             .detectLeakedSqlLiteObjects()
             .detectLeakedClosableObjects()
             .penaltyLog()
             .penaltyDeath()
             .build());
    }
    super.onCreate();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29289641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档