最近做一个应用,log一直在打印GC_CONCURRENT freed 433k,7% free 7975K/8564K,paused 12ms+4ms, total 70ms类似这样的信息。
    这个应用在一直使用的情况下是没有问题的,可是锁屏大概1分钟之后再回来,一种情况是应用直接没有响应了,另一种情况是等很久(大概10秒左右)又能响应,等它能响应回来后,又可以正常工作了。
    真是不知道是怎么回事,从log信息看到虽然UI上面没有响应,可是后台的service还在正常工作的。
是内存泄露吗?因为从上面的GC_CONCURRENT看出,我只有7%的内存是free的,还是什么别的原因引起的?
请各位不吝赐教,谢谢

解决方案 »

  1.   

    没有人知道吗?我现在又发现了一个问题,就是我用一个继承Application的类来管理activity的退出,在点击退出按键的时候调用
    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方法并没有被调用,这是怎么回事啊?
      

  2.   

    System.exit(0);应该是你马上退出了。
    activity的各种状态类似一个状态机一样。finish后,并不是直接调用onDestory,而是activityManagerservice调度的,然后给activityThread发的消息,但是进程退出了,因此无法执行
      

  3.   

    那个没有仔细研究过,也是老见,但没当过回事
    但内存泄露也不应该导致UI不响应,你说呢?会不会是其它原因?
    你有没有在onResume或者onStart里执行费时的事?
      

  4.   

    并没有在onResume和onStart里面执行费时的东西,都只是registerReceiver而已。
    另外是应用一起来会有一个service一直在后台运行,控制媒体播放用的
      

  5.   

    “一种情况是应用直接没有响应了,另一种情况是等很久(大概10秒左右)又能响应,等它能响应回来后”再仔细描述下,没响应是touch没作用?
      

  6.   

    “点击上面的按键没有响应,”
    那就是ANR啊,执行按键的处理时间长了
      

  7.   

    呵呵,请baidu
    Android ANR,就是别把费时的操作放在主线程里
      

  8.   


    我是做一个DLNA的手机控制端,activity显示手机本地的媒体列表,有一个service是用来实现媒体播放控制的。然后点击媒体列表的某一项的时候就会弹出一个popupwindow,这个popupwindow上面是控制媒体播放的一些按键,比如pause/next这些。点击这些按键的时候就发一个广播给service,service收到广播之后就执行那些控制动作。请问这是哪里出了差错啊?
      

  9.   

    看看 /data/anr/traces.txt 的内容