java如何把值传到类_java – 如何将值从类传递到Activity – Android

博客内容涉及在Android应用中创建一个UDP服务器线程,该线程监听特定端口并接收数据包。作者面临的问题是如何将接收到的数据包传递给Activity的方法进行处理,例如进行计算或更新UI。解决方案是在`MyDatagramReceiver`内部实现一个接口,让Activity实现此接口,从而当数据包到达时调用Activity的方法。
摘要由CSDN通过智能技术生成

我有关于课程/任务/活动的新手问题.我来自C所以我不知道这是否是一个很好的方法来做我需要的.

我创建了一个类:

public class UDPServer {

private MyDatagramReceiver myDatagramReceiver = null;

private static int MAX_UDP_DATAGRAM_LEN = 1024;

private static int UDP_SERVER_PORT = 5000;

public void start() {

myDatagramReceiver = new MyDatagramReceiver();

myDatagramReceiver.start();

}

public void kill() {

myDatagramReceiver.kill();

}

private class MyDatagramReceiver extends Thread {

private boolean bKeepRunning = true;

private String lastMessage = "";

public void run() {

String message;

byte[] lmessage = new byte[MAX_UDP_DATAGRAM_LEN];

DatagramPacket packet = new DatagramPacket(lmessage, lmessage.length);

DatagramSocket socket = null;

try

{

socket = new DatagramSocket(UDP_SERVER_PORT);

while(bKeepRunning)

{

socket.receive(packet);

message = new String(lmessage, 0, packet.getLength());

lastMessage = message;

//Here should call activity method

});

}

}

catch (Throwable e)

{

e.printStackTrace();

}

finally

{

if (socket != null)

{

socket.close();

}

}

}

public void kill() {

bKeepRunning = false;

}

}

}

在我的活动里面我:

@Override

public void onResume() {

super.onResume();

mUDPServer = new UDPServer();

mUDPServer.start();

}

@Override

public void onPause() {

super.onPause();

mUDPServer.kill();

}

现在,每当我收到一个数据包时,我希望这个线程/类将接收到的数据包传递给一个Activity方法,该方法详细说明(做一些计算或更新一些UI ecc ..)这个传入的数据.但我无法想象如何做到这一点,也许我的做法不正确.我可以将线程代码放在Activity中,但它似乎使代码的可读性降低.

建议怎么做?

@Anshul Jain代码更新:

public class Main_activity extends Activity implements Interface_UDPServer{

TextView recived_message;

UDPServer mUDPServer;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

recived_message = (TextView)findViewById(R.id.recived_message);

}

@Override

public void onResume() {

super.onResume();

mUDPServer = new UDPServer(this);

mUDPServer.start();

}

@Override

public void onPause() {

super.onPause();

mUDPServer.kill();

}

public void sendData(final String str){

runOnUiThread(new Runnable() {

@Override

public void run() {

recived_message.setText(str);

}

});

}

}

XML文件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_below="@+id/linearLayout"

android:layout_alignLeft="@+id/linearLayout"

android:layout_alignStart="@+id/linearLayout">

android:id="@+id/recived_message"

android:layout_width="200dp"

android:layout_height="35dp"

android:textColor="#444444"

android:textSize="20dp" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值