您的位置:首页 > 产品设计 > UI/UE

Android串口通讯,在线程里一直监听是否有消息发来,接收到消息到runOnUiThread处理跳转页面,页面跳转关闭之后,在发送消息尽然还会执行在打开页面?

2017-01-01 10:03 519 查看
我写了一个线程,在线程里死循环一直在监听接收单片机给我发来的消息,接收到之后,进到处理数据的方法里,方法里面有个runOnUiThread线程,用来更新ui信息,当接收到我需要跳转页面的信息时,执行跳转页面,并关闭当前页面(activity1)。但是跳转之后,在新页面(activity2)接收消息,它尽然会在activity1页面在接收一次,在次执行了一遍跳转之前的代码。之后就会恢复正常。

也就是说,activity1页面如果是执行跳转activity2页面的话,它会吧同一个页面打开两次。如果在activity1页面在跳转前还有接收显示信息的话,那么我接收5条信息,第一次接收它会在activity1页面显示,跳转之后我在activity2页面在发送接收5条信息,它还是会在activity1页面接收,但之后就好正常了。

下面是源码:

private class ReadThread extends Thread {  

  

        @Override  

        public void run() {  

            super.run();  

            while (!isInterrupted()) {  

                int size;  

                try {  

                    byte[] buffer = new byte[30];  

                    if (mInputStream == null)  

                        return;  

                      

 

                     mInputStream.read(buffer);  

                    size=Integer.parseInt(Integer.toHexString(buffer[2]))+3;

                    if (size > 3) {  

                        onDataReceived(buffer, size);  

                    }  

                } catch (IOException e) {  

                    e.printStackTrace();  

                    return;  

                }  

            } 

            

        }  

    }  

      void onDataReceived(final byte[] buffer, final int size) {

// TODO Auto-generated method stub

runOnUiThread(new Runnable() {

@Override

public void run() {

Toast.makeText(getApplicationContext(), "接收成功"+reString,

     Toast.LENGTH_SHORT).show();

Intent intent=new Intent(Main1Activity.this,Main2Activity.class);

startActivity(intent);

Main2Activity.this.finish();

}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐