Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NoClassDefFoundError:android.app.AnrmagerProxy_Android_Crash_Stack Trace_Noclassdeffounderror_Android Anr Dialog - Fatal编程技术网

NoClassDefFoundError:android.app.AnrmagerProxy

NoClassDefFoundError:android.app.AnrmagerProxy,android,crash,stack-trace,noclassdeffounderror,android-anr-dialog,Android,Crash,Stack Trace,Noclassdeffounderror,Android Anr Dialog,有人知道为什么会这样吗?我看到我的应用程序报告了这次崩溃,但我不知道是什么 java.lang.NoClassDefFoundError: android.app.ANRManagerProxy Thread: Binder_3, Exception: java.lang.NoClassDefFoundError: android.app.ANRManagerProxy at android.app.ANRManagerNative.asInterface(ANRManagerNative.

有人知道为什么会这样吗?我看到我的应用程序报告了这次崩溃,但我不知道是什么

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)

这一错误可以在一小部分设备上看到(我没有列表,但它们往往没有品牌),这些设备的固件开发人员出于未知原因从设备框架中删除了
anrmagerproxy
(我通过查找固件并自己反编译来确认这一点)

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

我建议将其作为调试方法执行时间的一个很好的库,以便将注意力集中在花费时间最多的地方。这将有助于为所有用户改进您的代码,并降低相关崩溃的风险。

发生这种情况是因为

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

  • 目标设备已将固件弄乱
下面是一个设备列表,我在其中更频繁地遇到错误-,因此不仅仅是低端设备,小心您会忽略它:-)

联想A316i、N5i、V769M、G3 orro、V5、G3、X-2、F-G906、Z350、V10、G910、EVOLVEO StrongPhone D2、A70C、G9006、V13、C3000、n968、SM-T322、H9503、GT-H9503、S5、F1、联想TP-6000、Galaxy Tab SM-T700C

对此,你唯一能做的就是让你的应用程序具有响应性。最好的方法是在开发和测试期间使用严格模式,即执行以下操作:

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();
}

嗯,ANR通常与“应用程序未响应”相关,即长时间占用主应用程序线程时给出的错误消息。这发生在绑定线程上的事实表明,
anrmagerproxy
可能是捆绑关键线程(包括绑定线程池)的观察者。确保您没有占用主应用程序线程或任何绑定线程(例如,使用AIDL的远程服务)。然而,我不知道为什么一些Android版本缺少这个类,并给你提供了
NoClassDefFoundError
。这只发生在一个特定的设备上吗?@JonasCz不能肯定,但我想,是的。你解决了这个问题吗?我们只在运行4.2.2的联想A316i上看到过一次。哇,这是一个很好的“功能”。-嘿,伙计,我们应该从框架中删除随机类吗?-当然,兄弟,这是个很棒的主意