最近做一个应用,log一直在打印GC_CONCURRENT freed 433k,7% free 7975K/8564K,paused 12ms+4ms, total 70ms类似这样的信息。
这个应用在一直使用的情况下是没有问题的,可是锁屏大概1分钟之后再回来,一种情况是应用直接没有响应了,另一种情况是等很久(大概10秒左右)又能响应,等它能响应回来后,又可以正常工作了。
真是不知道是怎么回事,从log信息看到虽然UI上面没有响应,可是后台的service还在正常工作的。
是内存泄露吗?因为从上面的GC_CONCURRENT看出,我只有7%的内存是free的,还是什么别的原因引起的?
请各位不吝赐教,谢谢
这个应用在一直使用的情况下是没有问题的,可是锁屏大概1分钟之后再回来,一种情况是应用直接没有响应了,另一种情况是等很久(大概10秒左右)又能响应,等它能响应回来后,又可以正常工作了。
真是不知道是怎么回事,从log信息看到虽然UI上面没有响应,可是后台的service还在正常工作的。
是内存泄露吗?因为从上面的GC_CONCURRENT看出,我只有7%的内存是free的,还是什么别的原因引起的?
请各位不吝赐教,谢谢
public void exit() {
Log.e(TAG, "exit in myapplication");
for (Activity activity : activityList) {
Log.e(TAG, activity.getLocalClassName()+ " finish");
activity.finish();
}
System.exit(0);
}
这个函数,可是发现执行finish()方法后activity的onDestroy方法并没有被调用,这是怎么回事啊?
activity的各种状态类似一个状态机一样。finish后,并不是直接调用onDestory,而是activityManagerservice调度的,然后给activityThread发的消息,但是进程退出了,因此无法执行
但内存泄露也不应该导致UI不响应,你说呢?会不会是其它原因?
你有没有在onResume或者onStart里执行费时的事?
另外是应用一起来会有一个service一直在后台运行,控制媒体播放用的
那就是ANR啊,执行按键的处理时间长了
Android ANR,就是别把费时的操作放在主线程里
我是做一个DLNA的手机控制端,activity显示手机本地的媒体列表,有一个service是用来实现媒体播放控制的。然后点击媒体列表的某一项的时候就会弹出一个popupwindow,这个popupwindow上面是控制媒体播放的一些按键,比如pause/next这些。点击这些按键的时候就发一个广播给service,service收到广播之后就执行那些控制动作。请问这是哪里出了差错啊?