在Android中组织线程

在Android中组织线程,android,multithreading,usb,organization,Android,Multithreading,Usb,Organization,我的Android应用程序需要在我的应用程序的后台通过USB串行不断地接收信息,而通过USB串行发送信息只在某些功能上发生。当我们发送和接收时,我每次总是发送一个X字节的数据包。我了解安卓USB API是如何工作的,我遇到的问题是我该如何组织它?我会只使用一个线程来接收,其余的作为函数,还是整个USB连接/发送和接收都在一个线程中?主要活动名为Homescreen.java,下面是我到目前为止如何组织它的 public class HomeScreen extends Activity impl

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

public class HomeScreen extends Activity implements OnTouchListener, Runnable{
onCreate() { }
onResume() { }
onStart() { }
onDestroy() { }
run() { }
}
注意:没有onPause的原因是因为此应用程序是全屏小部件,不应关闭


另一个问题:如果我要制作一个线程,我会让它从Homescreen.java扩展吗?那么上下文呢?我可以直接导入吗?不太喜欢上下文对象

这更多的是设计选择,例如,如果您想要一个后台线程来处理来自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,这将停止线程

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

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

您可以查看。这是Android的一个特殊线程实现,应该让事情变得更简单。如果你不做任何螺纹重载,我建议你去做这个任务。您只需在主屏幕类中编写一个内部类,编写逻辑并从活动中调用它,例如从onCreate中调用

您可以在活动中尝试getBaseContext—我想这将为您提供相关的上下文


干杯

感谢您的帮助,当我创建新活动时,我注意到在usb api中我需要引用上下文。我可以导入android.content.Context;?或者在这方面有没有额外的步骤来确保我引用了正确的变量?@dogz1我建议你阅读Android的基础知识。网上有很多资源,比如Android文档。Marakana提供了一系列优秀的视频教程。只需为java开发者谷歌Marakana android。Marko很好地解释了这些概念。此堆栈帖子提供了有关上下文的更多信息。如果线程问题已解决,请标记为已解决