我使用ObjectAnimator并在不同的设备上测试应用程序。在一些旧的慢速手机上它动画太糟糕了(没有GPU,没有内存等),所以我想自动将用户切换到应用的第二版(精简版)。
那么如何慢慢地检测出ObjectAnimator是什么?
Choreographer是否有同样的倾听者?它列出了catlog中的错误,但我想在代码中获取它。
01-22 05:55:15.775:INFO / Choreographer(3794):跳过33帧!应用程序可能在其主线程上做了太多工作。
注意:我知道如何通过系统命令解析catlog,但在我看来它不是一个聪明或快速的解决方案。
注2:我不需要加快速度。我需要检测慢速手机。
答案 0 :(得分:0)
好的,这个解决方案很好用
可以从ObjAnimator的循环中调用它(例如,监听器 - onRepeat)
您可以统计事件并对设备速度做出结论。
P.S。它不是聪明的,但直到没有人回答本机帧率报告......
boolean getCatLog(){
boolean yes=false;
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String output;
String lastLine = null;
while ((output = reader.readLine()) != null) {
lastLine = output;
}
if(lastLine!=null && lastLine.contains("Choreographer")){
Log.d(TAG,"yes!"); //do not remove!
yes=true;
}
reader.close();
process.waitFor();
} catch (IOException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return yes;
}