我必须在一个服务中接收数据包,然后活动活动应该接收它。最好的方法是什么?一些处理程序,消息,广播接收器......?
我在服务中使用此代码:
@Override
public void onStart(Intent intent, int startId) {
Runnable myRunnable = new Runnable() {
public void run() {
while(true) {
try {
DatagramSocket socket;
socket = new DatagramSocket(4444);
socket.setBroadcast(true);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
myThread = new Thread(myRunnable);
myThread.start();
}
如何将每个数据包发送到正在运行的活动,以便此活动将由数据包控制?
感谢您的回答。
答案 0 :(得分:0)
您确实可以使用广播接收器。只是让你的服务发送一个sendBroadcast(...)的意图,你的活动应该有一个广播接收器,可以接收它并做它的东西。多个活动可以接收相同的广播消息。 您可以使用onPause()和onResume()函数更改布尔值以查看活动是否在前台运行,然后相应地处理内容。
您可以查看以下主题:How to have Android Service communicate with Activity
MaximumGoat有一个很好的答案。下次搜索更好!
编辑: 如果您创建要广播的Intent,则可以使用myIntent.putExtra(String name,variable var)在Intent中添加额外信息。变量可以是多种类型,请查看:http://developer.android.com/reference/android/content/Intent.html#putExtra%28java.lang.String,%20double[]%29
您可以在intent中添加多个额外变量,并使用getIntExtra(String name,int default)或getStringExtra(...)或getWhateverExtra(String name,默认值)在广播接收器中检索它们。