我想将我的客户端从Java Swing(Java client
)移植到Android(Android client
)。
基本上,我的Java client
有一个线程,它运行一个永远的while循环来接收UDP数据包,并且基于UDP数据包的内容,相应的JFrame的UI将被更新。
现在我希望我的Android client
有一个background worker
类似Java client
中的主题,worker
将在main activity
中初始化。然后当有来自UDP套接字的请求时,main activity
将启动一些相应的活动(聊天活动),然后有一些其他请求来自UDP套接字,the worker
将更新活动(此活动可以是屏幕上显示的主要活动或聊天活动。
所以我的问题是background worker
应该是什么:
哪种方式符合我的要求?
谢谢!
答案 0 :(得分:1)
后台工作者应该是一项服务,因为
服务是一个可以执行长时间运行的应用程序组件 在后台运行并且不提供用户界面。
当您的UI将成为活动时,您的服务将读取UDP数据包并相应地修改活动。
答案 1 :(得分:0)
Service
是您最合适的候选人。
答案 2 :(得分:0)
每个Android应用程序都有一个类Application类。首先扩展它,它将在你的应用程序即将开始活动之前第一次初始化。初始化/启动正常的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 ();
}