0

我的 Android 应用程序需要在我的应用程序的后台通过 USB 串口不断接收,而通过 USB 串口发送信息只发生在某些功能上。当我们发送和接收时,我总是每次发送一个 X 字节的数据包。我了解 Android USB API 的工作原理,我遇到的问题是我将如何组织它?我会使用一个线程只接收,其余的作为函数,还是整个 USB 连接/发送和接收都在一个线程中?主要活动称为“Homescreen.java”,这是我到目前为止的组织方式。

public class HomeScreen extends Activity implements OnTouchListener, Runnable{
onCreate() { }
onResume() { }
onStart() { }
onDestroy() { }
run() { }
}

注意:没有 onPause 的原因是因为这个应用程序是一个全屏小部件,永远不应该关闭。

另一个问题:如果我要创建一个线程,我是否必须让它从 Homescreen.java 扩展?上下文呢?我可以只导入吗?(不太热衷于 Context 对象)

4

2 回答 2

0

这更多是设计选择,例如,如果您想要一个后台线程来处理来自 USB 的数据

public class test extends Activity{
Thread t;
runT= true;

public void onCreate(Bundle b)
{
    ..........
    ..........
    t = new Thread(new Runnable() {
        @Override
        public void run()
        {
            while(runT)
            {
                //call data read or send functions here you can add condtion to sleep the thread as well
            }
        }
    });
    t.start();
}
}

当您结束活动时,只需将 runT 设置为 false,这将停止线程。

您还可以拥有一个线程池并相应地使用 theads。

如果这种情况不经常发生,您可以在每次要发送数据时启动 Asynctask。

于 2012-06-01T22:01:25.763 回答
0

您可以查看AsyncTask。它是 Android 的一个特殊线程实现,应该让事情变得更简单。如果您没有做任何线程化的“繁重工作”,我建议您使用 AsyncTask。您只需在 HomeScreen 类中编写一个内部类,编写您的逻辑并从您的 Activity 中调用它(例如从 onCreate() 中)。

getBaseContext()您可以从活动中尝试- 我想这将为您提供相关的上下文。

干杯

于 2012-06-01T22:13:51.793 回答