我有一个奇怪的问题。处理程序线程中的代码执行中断。环境是Android系统的车载机器。在这个项目去年的测试时间里,我遇到了5次以上的问题。但是看日志,我无法得到这个问题的原因。</p>
谁知道这个问题的原因?它是由 JVM 或 Android 处理程序线程还是 CPU 引起的,为什么?
由于那里项目代码比较复杂,问题简单代码及现象如下:
//init logic code
HandlerThread ht = new ThandlerThread("sample");
ht.start();
Handler handler = new Handler(ht.getLooper()){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
test();
break;
}
};
//send message logic
Message message = handler .obtainMessage();
message.what= 1;
handler .sendMessage(message);
//test method impl
public void test(){
Log.d("test","execute test start");
Log.d("test","before a");
simpleA();//some operation very simple and you can know this method whether execute by log and
app’s ui state
//some log
Log.d("test","after a");
Log.d("test","before b");
simpleB()
Log.d("test","after B");
Log.d("test","test log1");
Log.d("test","test log2");
Log.d("test","execute test end");
}
通常和大多数时候,测试方法可以很容易地执行。有时在测试方法执行时,可能会打印“执行测试开始”日志但这段代码的逻辑没有执行,或者“测试日志2”日志打印但“执行测试结束” ", or "before b" print but simpleB method and behind code not execute. 这不是日志丢失,因为您可以分析代码执行与 ui 和数据保持不变。CPU信息是飞思卡尔半导体IMX6QP