作者erspicu (.)
看板AndroidDev
标题[问题] 高效率的console文字模拟?
时间Thu May 24 22:02:14 2012
简单来说就是利用Textview来模拟一个终端机console的介面
然後用settext来模拟print的行为
public LinkedList<String> screen_text = new LinkedList<String>();
public String get_screen_txt (String tmp){
String [] lines = tmp.split("\n") ;
for( int i=lines.length-1 ; i>=0 ; i-- )
screen_text.addFirst(lines[i]+"\n");
while (screen_text.size()>15)
screen_text.removeLast();
String[] a = new String[screen_text.size()];
tmp = "";
for(String element : screen_text.toArray(a)) {
tmp += element;
}
update_finish = true;
return tmp ;
}
最快的方法应该是
http://stackoverflow.com/questions/8346833/console-textview-android
可是这篇没考虑到当列印次数越来越多
字串变数越来越长
浪费记忆体的问题
而我的方法会考虑到萤幕能容纳的行数
自动删除萤幕以外的字串资料
不过效率上看起来似乎不是很理想
有人处理过这种问题吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.69.92.20
1F:推 yauhh:模仿 BitmapFactory解? 05/24 22:36
2F:→ nobody1:string 和 stringbuilder 的差别知道吗? 05/25 00:10
java版有说阿 可是我的重点是想放在演算法层面
至於用stringbuilder的加速方法 以後再来弄看看
附带一提 其实效果也还OK拉... 只是觉得为了处理一个print
需要动用到那麽多行程式码 想说看看有没有比较精简的方式而已
不过似乎就是去做一个FIFO的QUEUE 好像很难再找到更好的方式
※ 编辑: erspicu 来自: 219.69.92.20 (05/25 00:43)
3F:推 qrtt1:知道有效的就先做吧。以後再弄!? 05/25 13:10
4F:→ yauhh:你所提的效率是想要限制记忆体的耗用还是加快印字速度? 05/25 21:48
其实两点目前都不够成问题
只是说觉得这样一个简单的print模拟需求
需要动用到这麽多行程式码 有没有比较精简的写法
当然记忆体问题也得考虑 不然stackoverfollow的解法 应该是最快最简单的了
※ 编辑: erspicu 来自: 111.184.196.83 (05/25 21:51)
5F:→ yauhh:原来是说写程式的过程最快 05/25 22:02