0

我想将我的客户端从 Java Swing( Java client) 移植到 Android( Android client)。

基本上,我Java client有一个线程,它运行一个永远的while循环来接收UDP数据包,并根据UDP数据包的内容,相应的JFrame的UI将被更新。

现在我希望我在 . 中Android client有一个background worker类似的线程Java clientworker并将在main activity. 然后当有一些来自UDP socket的请求时,main activity会启动一些相应的activity(Chat Activity),然后有一些其他的来自UDP socket的请求,the worker会在activity上更新(这个activity可以是main activity也可以是一个Chat Activity ) 正在显示在屏幕上。

所以我的问题是background worker应该是什么:

  • 服务
  • 普通Java线程
  • 异步任务
  • 要不然是啥...

哪个最符合我的要求?

谢谢!

4

3 回答 3

1

后台工作者应该是一个服务,因为

Service 是一个应用程序组件,可以在后台执行长时间运行的操作,并且不提供用户界面。

虽然您的 UI 将是一个活动,但您的服务将读取 UDP 数据包并相应地修改活动。

于 2012-04-25T08:11:57.070 回答
0

在您的情况下, AService是最合适的候选人。

于 2012-04-25T08:11:42.907 回答
0

每个 android 应用程序都有一个类 Application 类。首先扩展它,它将在您的应用程序第一次启动时初始化,甚至在您的 Activity 之前。初始化/启动您的普通 java 线程以在此处执行后台工作。关键优势是您可以从应用程序的任何位置获取此应用程序类的实例(这意味着您可以从应用程序的任何位置控制后台线程。发送后台 http 请求等......无论如何......)。然后初始化您想要对其进行更改并执行类似操作的特定活动的 UI 线程上的处理程序。

                 private Handler myHandler ; 

                  public void checkBackgroundAndUpdateUi()
                  {
                    if(conetxt.getApplicationContext().getStatus == completed)
                    {
                       initializeHandler();
                        handler.postRunnable(myRunnable);

                    }
                  }
             Runnable myRunnable = new Runnable(){

                public void run()
                 {

                  // update your UI views here .....

                 }
             };

             private void initializeHandler(){
               myHandler = new Handler ();
             }
于 2012-04-25T08:16:56.117 回答