1

我有一个奇怪的问题。处理程序线程中的代码执行中断。环境是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

4

0 回答 0