android最新版本当网络状况不好的时候出现ANR

问题描述

当网络状况不好的时候,有很大概率出现ANR,日志如下:Executing service com.haoqi.truckclub/com.hyphenate.chat.EMChatServiceANR Executing service com.haoqi.truckclub/com.hyphenate.chat.EMChatService#00 pc 0002579c /system/lib/libc.so (__futex_syscall3+8)#01 pc 0000f7c4 /system/lib/libc.so#02 pc 0002df29 /data/app-lib/com.haoqi.truckclub-2/libhyphenate.so (std::recursive_mutex::lock()+2)#03 pc 00051dd1 /data/app-lib/com.haoqi.truckclub-2/libhyphenate.so#04 pc 0002ddfd /data/app-lib/com.haoqi.truckclub-2/libhyphenate.so#05 pc 0002d955 /data/app-lib/com.haoqi.truckclub-2/libhyphenate.so#06 pc 0006b58b /data/app-lib/com.haoqi.truckclub-2/libhyphenate.so (Java_com_hyphenate_chat_adapter_EMAChatClient_native_1onNetworkChanged+38)#07 pc 0001ee8c /system/lib/libdvm.so (dvmPlatformInvoke+112)#08 pc 0005038f /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+494)#09 pc 000524bb /system/lib/libdvm.so (dvmResolveNativeMethod(unsigned int const*, JValue*, Method const*, Thread*)+218)#10 pc 00028268 /system/lib/libdvm.so#11 pc 0002f70c /system/lib/libdvm.so (dvmMterpStd(Thread*)+68)#12 pc 0002cd7c /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)#13 pc 00064783 /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+426)#14 pc 0006cdf5 /system/lib/libdvm.so#15 pc 00028268 /system/lib/libdvm.so#16 pc 0002f70c /system/lib/libdvm.so (dvmMterpStd(Thread*)+68)#17 pc 0002cd7c /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)#18 pc 00064279 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+332)#19 pc 0004bc79 /system/lib/libdvm.so#20 pc 00050733 /system/lib/libandroid_runtime.so#21 pc 00051557 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+518)#22 pc 00000ef3 /system/bin/app_process#23 pc 0000f41c /system/lib/libc.so (__libc_init+100)#24 pc 00001034 /system/bin/app_processjava:com.hyphenate.chat.adapter.EMAChatClient.native_onNetworkChanged(Native Method)com.hyphenate.chat.adapter.EMAChatClient.onNetworkChanged((null):-1)com.hyphenate.chat.EMClient.onNetworkChanged((null):-1)com.hyphenate.chat.EMSmartHeartBeat$3.onForeground((null):-1)com.hyphenate.chat.EMClient$10.onActivityResumed((null):-1)android.app.Application.dispatchActivityResumed(Application.java:208)android.app.Activity.onResume(Activity.java:1114)android.support.v4.app.FragmentActivity.onResume(FragmentActivity.java:481)com.hyphenate.easeui.ui.EaseBaseActivity.onResume(EaseBaseActivity.java:43)com.haoqi.truckclub.base.activity.BaseActivity.onResume(BaseActivity.java:45)android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1199)android.app.Activity.performResume(Activity.java:5556)android.app.ActivityThread.performResumeActivity(ActivityThread.java:2975)android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3018)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2422)android.app.ActivityThread.access$800(ActivityThread.java:151)android.app.ActivityThread$H.handleMessage(ActivityThread.java:1342)android.os.Handler.dispatchMessage(Handler.java:110)android.os.Looper.loop(Looper.java:193)android.app.ActivityThread.main(ActivityThread.java:5351)java.lang.reflect.Method.invokeNative(Native Method)java.lang.reflect.Method.invoke(Method.java:515)com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)dalvik.system.NativeStart.main(Native Method)希望尽早修复

解决方案

建议你直接拿最新的环信版本的demo测试下的,看下还有没有这个问题,如果还复现的话 ,最好是提供下机型,还有手机中的log日志给我们的 。
解决方案二:
日志已经全部贴上去了,就是环信.so文件里面检测网络变化的时候ANR了,只要网络情况特别不好,几乎所有手机都会重现,而且这种情况实在难以模拟复现
解决方案三:
我发现问题在哪里了,在EMClient中的registerActivityLifecycleCallbacks方法中onActivityResumed调用了在接口AppStateListener中的方法onForeground,如下图:

时间: 2024-10-29 05:11:32

android最新版本当网络状况不好的时候出现ANR的相关文章

android-Android手机如何模拟无网络状况

问题描述 Android手机如何模拟无网络状况 android手机上的应用,测试的时候如何模拟网络不好的状况?当前会有是出现在网络不好的情况下才产生的问题,要怎么复现这样的问题 解决方案 装一张使用移动或者联通2g网络,找一个阴森的茅坑,蹲着.包你网络不好. 解决方案二: 下载一个软件叫fiddler,然后百度一下这个软件怎么用.我一直是用这个模拟网络不好的. 手机连上随便一个无线,然后给这个无线设置代理,ip是你电脑的ip,端口号是在fiddler里设置的端口号. 然后这时候你的手机应该就可以

Android 广播监听网络状态详解及实例代码

Android 广播监听网络状态 我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断. 这时候,我们一般情况下,两种方式进行处理. 第一: 开启服务. 第二:发送广播的形式. 建议采用方法二. 源代码如下: 广播: /** * 有网络的广播 */ BroadcastReceiver connectionReceiver = new BroadcastReceiver() { @O

Android中Wifi/3G网络连接

获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网 络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityManager  类 ,用于网络连接状态的检测. Android开发文档这样描述ConnectivityManager 的作用: Class that answers queries about the state of network connectivity. It also notifies ap

android开发-在Android开发中打开网络设置出错,点击后直接退出而不是打开网络设置 怎么会事啊

问题描述 在Android开发中打开网络设置出错,点击后直接退出而不是打开网络设置 怎么会事啊 private void showSetNetworkDialog() { AlertDialog.Builder builder = new Builder(this); builder.setTitle("设置网络"); builder.setMessage("网络错误请检查网络链接"); builder.setPositiveButton("设置网络&qu

android app 在移动网络下无法连接服务器

问题描述 android app 在移动网络下无法连接服务器 我们的服务器在电信托管,现在开发了一款app应用,如果不使用wifi用移动网络不能访问服务器的数据了 但是在联通网络下却可以,在移动网络下面拿手机去访问官网也可以,唯独在app里面不能访问,以前我们的项目部署在阿里云服务器的时候没有任何问题.最近公司自己购买了一台物理服务器就出现这样的问题.就是手机卡是移动的,打开流量能上网,用手机自带的浏览器也能访问我们的网址,即我们的项目,可是app却访问不了.各位程序员兄弟遇到过吗?知道怎么解决

在 android 中如何获得网络强度

问题描述 在 android 中如何获得网络强度 我想在手机上面显示网络的网络信号强度. 现在我可以通过下面的代码检查出是否连接到wifi,但是接下来我想要知道网络信号强度.还需要添加什么代码? ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetInfo = con

用eclipse开发android项目如何通过网络控制arm9的开发板?

问题描述 用eclipse开发android项目如何通过网络控制arm9的开发板? 用socket的类,怎么链接到arm板子? 怎么样向arm板子发送命令?

vitamio 直播 卡住-急求,我现在Android 集成Vitamio直播网络视频一段时间就停止,点击也不能继续播放

问题描述 急求,我现在Android 集成Vitamio直播网络视频一段时间就停止,点击也不能继续播放 Android 集成Vitamio 直播网络视频m3u8流,一段时间就停止,点击也不能继续播放,必须退出activity页面再进来这个activity播放界面之后进来才能继续播放, .开始我们怀疑是缓冲问题,为了证实是否是缓冲问题,我们获取缓冲监听OnBufferingUpdateListener?和setOnInfoListener,打log,发现不是在缓冲状态下,而是正常播放状态下卡住.急

android 线程池配合网络请求框架

问题描述 android 线程池配合网络请求框架 android一些比较常用的网络请求框架如Xutils,volley,内部有线程池吗?如果没有,如何配合自己编写的线程池进行网络请求? 解决方案 Volley是有的,参考:http://www.zhihu.com/question/24695486