에러로그같은 실마리가 될만한 것들을 올려주시면 다른 분들이 원인을 찾는데 도움이 될 듯합니다.
가장 쉽게 해볼 수 있는 부분은 디버그를 하시거나 try catch로 해당 thread 에서 어떤 Exception이 발생하는지 확인해 보는 방법일 것 같습니다.
참고로 Thread에 사용되는 로직은 Thread-safe가 되어야 할 것 같은데, LinkedList 는 thread에 안전하지 않은 것으로 보입니다. 동시에 여러군데서 접근할 경우 문제가 될 수 있을 것 같습니다.
그리고 해당 UI에 접근하는 로직이 없다면 모든 동작을 백그라운드에 처리하시는 게 더 좋다고 생각됩니다. 예를 들면, receive 같은 함수가 그렇습니다.
라이프사이클도 체크해 보셔야 할 듯 합니다. 로직 전체를 알 수 없지만, 아마도 Activity/Fragment가 stop되거나 destory될 때 해당 thread는 계속 살아있을 가능성이 높아 보입니다. 라이플 사이클에 따라서 Thread의 중지, 시작, 취소, 대기 등의 처리를 하셔야할 것 같습니다.
그리고 모발앱에서는 절대로 sleep(70)같은 UI를 멈추게 하는 코드는 사용하시면 안됩니다. Handler.postDelayed, RxJava, Kotlin Coroutines같은 등등을 적절하게 사용하셔서 처리하시는 게 좋을 듯 합니다.
mavlinkpacketQueue.poll() 가 같은 코드를 사용하실 때는 반드시 먼저 Queue에 데이터가 존재하는지 체크하셔야 합니다.