Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Android-高效更新视图中的计数器_Android_Performance_Views - Fatal编程技术网

Android-高效更新视图中的计数器

Android-高效更新视图中的计数器,android,performance,views,Android,Performance,Views,在我正在编写的应用程序中,我有一系列的统计数据,我想为用户显示 统计数据包括特定模块上次运行的时间、下一次运行的时间、最后一次与服务器通信的时间以及下一次运行的时间 除此之外,还有内存使用(简单的内存使用,而不是测量实际使用) 内存使用情况等可以每几秒钟更新一次,这样就不会出现问题,但时间至少需要每秒钟更新一次(对于计数器)。 因为每秒钟运行一次(甚至500毫秒周期)会导致不规则的更新/跳过几秒钟,所以我现在以300毫秒周期运行它 但我确实注意到,我的应用程序在启动时开始滞后。 经过一些分析,结

在我正在编写的应用程序中,我有一系列的统计数据,我想为用户显示

统计数据包括特定模块上次运行的时间、下一次运行的时间、最后一次与服务器通信的时间以及下一次运行的时间

除此之外,还有内存使用(简单的内存使用,而不是测量实际使用)

内存使用情况等可以每几秒钟更新一次,这样就不会出现问题,但时间至少需要每秒钟更新一次(对于计数器)。
因为每秒钟运行一次(甚至500毫秒周期)会导致不规则的更新/跳过几秒钟,所以我现在以300毫秒周期运行它

但我确实注意到,我的应用程序在启动时开始滞后。
经过一些分析,结果是需要调整大小的视图占用了70%的时间,而字符串格式化程序(用于格式化计数器)占用了大部分的时间

除了正在使用的CPU之外,我还看到很多分配,每隔几秒钟我就会在logcat中看到一个GC_并发


有效解决这个问题有什么建议吗?

你能以一种不需要太大调整的方式重新构造它吗?例如:设置元素的宽度以填充屏幕,或者设置大于最长字符串大小的DP大小,您能否以某种方式对其进行重新调整,以减少字段的大小调整?例如:将元素的宽度设置为填充屏幕,或设置大于最长字符串大小的DP大小。我通过编写自己的计时器解决了这个问题,该计时器以短增量休眠,仅在满一秒后更新视图

这样,火灾间隔将为
[时段,时段+睡眠时间)
,当您选择较短的睡眠时间时,这是可以接受的


我也做了更改,上面写着“5分钟前”,我有两个计时器,一个每分钟启动一次,另一个每秒启动一次。

我通过编写自己的计时器解决了这个问题,该计时器以短增量休眠,仅在一整秒过去后更新视图

这样,火灾间隔将为
[时段,时段+睡眠时间)
,当您选择较短的睡眠时间时,这是可以接受的


我也改了,上面写着“5分钟前”我有两个计时器,一个每分钟启动一次,另一个每秒启动一次。

我在该列上使用最大宽度的TableView,我认为这无关紧要。我在该列上使用最大宽度的TableView,我认为这无关紧要。愚蠢的问题:你在使用单独的线程进行计算吗?不,别想如果我这样做了也没关系,因为大部分时间都花在重新调整视图的大小上,这只能从主UI线程完成。你不应该在UI线程上做任何处理器密集型的工作。我知道这一点,而且计算并不繁重,它更新了视图,正如我所说,必须在UI线程上完成。啊,对不起,看起来我ot困惑:-)愚蠢的问题:你使用单独的线程进行计算吗?不,如果我这样做了也没关系,因为大部分时间都花在重新调整视图的大小上,而这只能从主UI线程完成。你不应该在UI线程上做任何处理器密集型的工作。我知道这一点,而且计算并不繁重,这是关键注明了视图的日期,正如我所说,必须在UI线程上完成。啊,抱歉,看起来我有点困惑:-)