小编Man*_*hot的帖子

Android dalvikvm-heap:Clamp target GC heap

我正在编写一个程序来与Android Contacts数据库同步大量的联系人.下载适用于大约700个联系人,之后我一直得到一个内存堆错误,它调用无限数量的GC语句并最终重新启动电话.我正面临着HTC欲望的问题.

我使用DDMS中的Heap alocation工具检查了应用程序的堆大小,并使用Debug.dumpHprofData提取了hprof文件.两个日志都表明堆大小约为2.4MB.

但是,我得到以下日志,表明堆大小超过32.MB

dalvikvm-heap(92): Clamp target GC heap from 33.999MB to 32.000MB
dalvikvm(92): GC_FOR_MALLOC freed 2 objects / 48 bytes in 313ms
Run Code Online (Sandbox Code Playgroud)

我在循环中插入了以下日志语句,其中写了contatcs下载逻辑.

Log.e("Memory", "free mem =" +runtime.freeMemory());
Log.e("Memory", "total memory =" +runtime.totalMemory());
Run Code Online (Sandbox Code Playgroud)

这些是打印的声明的初始值和最终值

---------------------------------------------------------------
11-11 12:56:04.168: ERROR/Memory(25132): free mem =871248
11-11 12:56:04.168: ERROR/Memory(25132): total memory =4202464

---------------------------------------------------------------

11-11 13:01:55.408: ERROR/Memory(25132): free mem =891640
11-11 13:01:55.408: ERROR/Memory(25132): total memory =4726752

---------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

这表明同步联系人逻辑中没有内存泄漏.

有人可以告诉我为什么堆大小增加(高达32.00Mb)到设备重新启动的程度?我是Android和Java的新手,所以请放轻松我:).....

java android garbage-collection memory-leaks memory-management

22
推荐指数
1
解决办法
9170
查看次数

14
推荐指数
1
解决办法
2万
查看次数

成语关闭光标

我应该使用以下哪两个来确保所有游标都关闭?

    Cursor c = getCursor(); 

    if(c!=null && c.getCount()>0){ 
        try{ 
            // read values from cursor 
        }catch(..){} 
        finally{ 
            c.close(); 
        } 
    }//end if

    OR

    Cursor c = getCursor(); 
    try{ 
        if(c!=null && c.getCount()>0){ 
            // read values from cursor 
        }//end if 
    }catch(..){

    }finally{ 
        c.close(); 
    } 
Run Code Online (Sandbox Code Playgroud)

编辑:
几个问题:
1.我们需要在计数为0的游标上调用close()吗?
因为在第一个习语的情况下,将永远不会调用close().它假定对于没有元素的游标,永远不会打开游标.这是一个有效的假设吗?

请指教.

sqlite android cursor

11
推荐指数
1
解决办法
2530
查看次数

初学者提问:Wakelocks

我是WakeLock概念的新手,需要你的帮助.

问题:

  1. 我假设WakeLock是某种类型的锁,当执行代码保持时,它会阻止设备休眠.如果设备已处于睡眠/待机模式,那么代码会执行吗?假设它永远不会获得WakeLock?

  2. 当在后台线程(AsyncTask)中完成一个长时间运行的任务(abt 7-8秒)时,我是否应该为持有WakeLock而烦恼?AsyncTask是否已经为我获取了它?

  3. 我们赞赏官方文件的链接和唤醒锁上的文章.

谢谢.

android wakelock

7
推荐指数
1
解决办法
5089
查看次数

了解Traceview

我试图了解traceview的工作原理.我试图使用traceview分析一个方法,但有一个查询.

我附上了.trace的快照.它表示大多数时间是用蓝色标记的(顶层).但是没有进一步的信息.(执行此方法或执行的功能时.)

traceViewSnapshot

任何人都可以向我解释为什么它消耗这么多时间?

提前致谢!

android

7
推荐指数
1
解决办法
2558
查看次数

更改列表项选择的视图属性

我有一个包含自定义行的ListView.此自定义行具有以下UI元素

  1. ImageView imageView1,imageView2
  2. TextView textview1,textView2,textView3

要求是每当列表行被选中时,将会有以下更改

imageView1背景,颜色改变了

imageView1颜色已更改

textview1的颜色,大小和字体是变化的

textview2颜色,大小改变了

textview3颜色,大小改变

为此设计最好的方法是什么?

AFAIK我们无法在选择器中应用样式.有没有更好的方法来处理这个而不是在java代码中处理?

我们有setOnItemSelectedListener,可以在Listview上设置,它将具有以下回调方法:

i)onItemSelected

ii)onNothingSelected

然而,没有回调方法提供失去焦点的项目的细节.这是一个更好的地方吗?

提前致谢.

android listview focus

5
推荐指数
1
解决办法
1124
查看次数

Android contatcs vcard API

是否有任何android API来提取vcard 3.0格式的联系人?我遇到了一个开源vcard项目android-vcard

但在使用示例中,提到了以下注释.

重要提示:如果您正在为Android设备开发应用程序,则不必使用此库,因为它已包含在基础Android框架中.只有在开发要在Android环境之外运行的应用程序时,此库才有用.Android开发人员:两次阅读此文本.

您能告诉我上面描述中提到哪个库吗?它是否可供应用程序开发人员使用?

android

3
推荐指数
1
解决办法
4288
查看次数