请编写两个activity传递listy

为 Activity 设置切换动画
我们知道,我们可以在 AndroidManifest.xml 文件中,通过 android:theme 属性设置 Activity 的主题。主题中定义了关于 Activity 外观的很多特性。同时,主题中还可以定义 Activity 的切换动画。这是应用 Activity 切换动画的一种方法。下面讲解一下如何通过主题来设置 Activity 间的切换动画。
定义包含动画的 Activity 主题
res/values/styles.xml,很简单,就是使用 windowAnimationStyle 这个属性,指定切换动画的style即可。
&style name="AnimActivityTheme"&
&item name="android:windowAnimationStyle"&@style/FeelyouWindowAnimTheme&/item&
定义切换动画 style
res/values/styles.xml
&style name="FeelyouWindowAnimTheme" parent="@android:style/Animation.Activity"&
&item name="android:activityOpenEnterAnimation"&@anim/in_from_left&/item&
&item name="android:activityOpenExitAnimation"&@anim/out_from_right&/item&
&item name="android:activityCloseEnterAnimation"&@anim/in_from_right&/item&
&item name="android:activityCloseExitAnimation"&@anim/out_from_left&/item&
注意需要继承自&@android:style/Animation.Activity。具体这4个属性什么意思呢?假设我们有 2 个 Activity,分别是 A1 和 A2:
当我们从 A1 启动 A2 时,A1 从屏幕上消失,这个动画叫做&android:activityOpenExitAnimation
当我们从 A1 启动 A2 时,A2 出现在屏幕上,这个动画叫做&android:activityOpenEnterAnimation
当我们从 A2 退出回到 A1 时,A2 从屏幕上消失,这个叫做&android:activityCloseExitAnimation
当我们从 A2 退出回到 A1 时,A1 出现在屏幕上,这个叫做&android:activityCloseEnterAnimation
结合上面我讲的情况,在脑海中想象一下,再结合属性的名字,就很容易理解了!
定义具体动画文件
这里的动画可以是透明度、位移、缩放之类的任何动画,我这里以位移来举例。当我们 A1 启动 A2 时,我希望 A1 从右边平移退出屏幕(out_from_right),A2 从左边平移进入屏幕(in_from_left)。当我们从 A2 退出回到 A1 时,我希望 A2 从左边平移退出屏幕(out_from_left),A1 从右边平移进入屏幕(in_from_right)
下面我贴一下4个具体的动画的 xml 文件:
anim/out_from_right.xml
&?xml version="1.0" encoding="utf-8"?&
author:Remex Huang
&translate xmlns:android="/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0" &
&/translate&
anim/in_from_left.xml
&?xml version="1.0" encoding="utf-8"?&
author:Remex Huang
&translate xmlns:android="/apk/res/android"
android:duration="500"
android:fromXDelta="-100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" &
&/translate&
anim/out_from_left.xml
&?xml version="1.0" encoding="utf-8"?&
author:Remex Huang
&translate xmlns:android="/apk/res/android"
android:duration="500"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="-100%p"
android:toYDelta="0" &
&/translate&
anim/in_from_right.xml
&?xml version="1.0" encoding="utf-8"?&
author:Remex Huang
&translate xmlns:android="/apk/res/android"
android:duration="500"
android:fromXDelta="100%p"
android:fromYDelta="0"
android:toXDelta="0"
android:toYDelta="0" &
&/translate&
应用到对应 Activity
AndroidMenifest.xml
android:name="info.feelyou.demo.A1"
android:theme="@style/AnimActivityTheme" &
&/activity&
android:name="info.feelyou.demo.A2"
android:theme="@style/AnimActivityTheme" &
&/activity&
阅读(...) 评论()编写和MQTT服务器通信的Android客户端程序(二)
客户端使用的API,开始我使用的是mqtt-client,使用过后发现问题百出,不能很好的满足要求,后来使用了官方推荐的,下面开始客户端代码的编写,为了方便测试这里有android和j2se两个工程:
1、新建android工程MQTTClient
2、MainActivity代码如下:
package ldw.
import java.util.concurrent.E
import java.util.concurrent.ScheduledExecutorS
import java.util.concurrent.TimeU
import org.eclipse.paho.client.mqttv3.IMqttDeliveryT
import org.eclipse.paho.client.mqttv3.MqttC
import org.eclipse.paho.client.mqttv3.MqttC
import org.eclipse.paho.client.mqttv3.MqttConnectO
import org.eclipse.paho.client.mqttv3.MqttE
import org.eclipse.paho.client.mqttv3.MqttM
import org.eclipse.paho.client.mqttv3.persist.MemoryP
import android.app.A
import android.os.B
import android.os.H
import android.os.M
import android.view.KeyE
import android.widget.TextV
import android.widget.T
public class MainActivity extends Activity {
private TextView resultTv;
private String host = "tcp://127.0.0.1:1883";
private String userName = "admin";
private String passWord = "password";
private MqttC
private String myTopic = "test/topic";
private MqttConnectO
private ScheduledExecutorS
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
resultTv = (TextView) findViewById(R.id.result);
handler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == 1) {
Toast.makeText(MainActivity.this, (String) msg.obj,
Toast.LENGTH_SHORT).show();
System.out.println("-----------------------------");
} else if(msg.what == 2) {
Toast.makeText(MainActivity.this, "连接成功", Toast.LENGTH_SHORT).show();
client.subscribe(myTopic, 1);
} catch (Exception e) {
e.printStackTrace();
} else if(msg.what == 3) {
Toast.makeText(MainActivity.this, "连接失败,系统正在重连", Toast.LENGTH_SHORT).show();
startReconnect();
private void startReconnect() {
scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
if(!client.isConnected()) {
connect();
}, 0 * 1000, 10 * 1000, TimeUnit.MILLISECONDS);
private void init() {
//host为主机名,test为clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
client = new MqttClient(host, "test",
new MemoryPersistence());
//MQTT的连接设置
options = new MqttConnectOptions();
//设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
//设置连接的用户名
options.setUserName(userName);
//设置连接的密码
options.setPassword(passWord.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//设置回调
client.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {
//连接丢失后,一般在这里面进行重连
System.out.println("connectionLost----------");
public void deliveryComplete(IMqttDeliveryToken token) {
//publish后会执行到这里
System.out.println("deliveryComplete---------"
+ token.isComplete());
public void messageArrived(String topicName, MqttMessage message)
throws Exception {
//subscribe后得到的消息会执行到这里面
System.out.println("messageArrived----------");
Message msg = new Message();
msg.what = 1;
msg.obj = topicName+"---"+message.toString();
handler.sendMessage(msg);
connect();
} catch (Exception e) {
e.printStackTrace();
private void connect() {
new Thread(new Runnable() {
public void run() {
client.connect(options);
Message msg = new Message();
msg.what = 2;
handler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
Message msg = new Message();
msg.what = 3;
handler.sendMessage(msg);
}).start();
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(client != null && keyCode == KeyEvent.KEYCODE_BACK) {
client.disconnect();
} catch (Exception e) {
e.printStackTrace();
return super.onKeyDown(keyCode, event);
protected void onDestroy() {
super.onDestroy();
scheduler.shutdown();
client.disconnect();
} catch (MqttException e) {
e.printStackTrace();
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
package ldw.mqttclient;&import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;&import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;import org.eclipse.paho.client.mqttv3.MqttCallback;import org.eclipse.paho.client.mqttv3.MqttClient;import org.eclipse.paho.client.mqttv3.MqttConnectOptions;import org.eclipse.paho.client.mqttv3.MqttException;import org.eclipse.paho.client.mqttv3.MqttMessage;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;&import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.KeyEvent;import android.widget.TextView;import android.widget.Toast;&public class MainActivity extends Activity {&&&&&private TextView resultTv;&&&&&private String host = "tcp://127.0.0.1:1883";&&&&private String userName = "admin";&&&&private String passWord = "password";&&&&&private Handler handler;&&&&&private MqttClient client;&&&&&private String myTopic = "test/topic";&&&&&private MqttConnectOptions options;&&&&&private ScheduledExecutorService scheduler;&&&&&@Override&&&&protected void onCreate(Bundle savedInstanceState) {&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&setContentView(R.layout.main);&&&&&&&&&resultTv = (TextView) findViewById(R.id.result);&&&&&&&&&init();&&&&&&&&&handler = new Handler() {&&&&&&&&&&&&@Override&&&&&&&&&&&&public void handleMessage(Message msg) {&&&&&&&&&&&&&&&&super.handleMessage(msg);&&&&&&&&&&&&&&&&if(msg.what == 1) {&&&&&&&&&&&&&&&&&&&&Toast.makeText(MainActivity.this, (String) msg.obj,&&&&&&&&&&&&&&&&&&&&&&&&&&&&Toast.LENGTH_SHORT).show();&&&&&&&&&&&&&&&&&&&&System.out.println("-----------------------------");&&&&&&&&&&&&&&&&} else if(msg.what == 2) {&&&&&&&&&&&&&&&&&&&&Toast.makeText(MainActivity.this, "连接成功", Toast.LENGTH_SHORT).show();&&&&&&&&&&&&&&&&&&&&try {&&&&&&&&&&&&&&&&&&&&&&&&client.subscribe(myTopic, 1);&&&&&&&&&&&&&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&} else if(msg.what == 3) {&&&&&&&&&&&&&&&&&&&&Toast.makeText(MainActivity.this, "连接失败,系统正在重连", Toast.LENGTH_SHORT).show();&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&};&&&&&&&&&startReconnect();&&&&&}&&&&&private void startReconnect() {&&&&&&&&scheduler = Executors.newSingleThreadScheduledExecutor();&&&&&&&&scheduler.scheduleAtFixedRate(new Runnable() {&&&&&&&&&&&&&@Override&&&&&&&&&&&&public void run() {&&&&&&&&&&&&&&&&if(!client.isConnected()) {&&&&&&&&&&&&&&&&&&&&connect();&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}, 0 * 1000, 10 * 1000, TimeUnit.MILLISECONDS);&&&&}&&&&&private void init() {&&&&&&&&try {&&&&&&&&&&&&&&&&&&&&&& //host为主机名,test为clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存&&&&&&&&&&&&client = new MqttClient(host, "test",&&&&&&&&&&&&&&&&&&&&new MemoryPersistence());&&&&&&&&&&&&&&&&&&&&&& //MQTT的连接设置&&&&&&&&&&&&options = new MqttConnectOptions();&&&&&&&&&&&&&&&&&&&&&& //设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接&&&&&&&&&&&&options.setCleanSession(true);&&&&&&&&&&&&&&&&&&&&&& //设置连接的用户名&&&&&&&&&&&&options.setUserName(userName);&&&&&&&&&&&&&&&&&&&&&& //设置连接的密码&&&&&&&&&&&&options.setPassword(passWord.toCharArray());&&&&&&&&&&&&// 设置超时时间 单位为秒&&&&&&&&&&&&options.setConnectionTimeout(10);&&&&&&&&&&&&// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制&&&&&&&&&&&&options.setKeepAliveInterval(20);&&&&&&&&&&&&&&&&&&&&&&&&//设置回调&&&&&&&&&&&&client.setCallback(new MqttCallback() {&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void connectionLost(Throwable cause) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//连接丢失后,一般在这里面进行重连&&&&&&&&&&&&&&&&&&&&System.out.println("connectionLost----------");&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void deliveryComplete(IMqttDeliveryToken token) {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//publish后会执行到这里&&&&&&&&&&&&&&&&&&&&System.out.println("deliveryComplete---------"&&&&&&&&&&&&&&&&&&&&&&&&&&&&+ token.isComplete());&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void messageArrived(String topicName, MqttMessage message)&&&&&&&&&&&&&&&&&&&&&&&&throws Exception {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//subscribe后得到的消息会执行到这里面&&&&&&&&&&&&&&&&&&&&System.out.println("messageArrived----------");&&&&&&&&&&&&&&&&&&&&Message msg = new Message();&&&&&&&&&&&&&&&&&&&&msg.what = 1;&&&&&&&&&&&&&&&&&&&&msg.obj = topicName+"---"+message.toString();&&&&&&&&&&&&&&&&&&&&handler.sendMessage(msg);&&&&&&&&&&&&&&&&}&&&&&&&&&&&&});//&&&&&&&&&&&&connect();&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&e.printStackTrace();&&&&&&&&}&&&&}&&&&&private void connect() {&&&&&&&&new Thread(new Runnable() {&&&&&&&&&&&&&@Override&&&&&&&&&&&&public void run() {&&&&&&&&&&&&&&&&try {&&&&&&&&&&&&&&&&&&&&client.connect(options);&&&&&&&&&&&&&&&&&&&&Message msg = new Message();&&&&&&&&&&&&&&&&&&&&msg.what = 2;&&&&&&&&&&&&&&&&&&&&handler.sendMessage(msg);&&&&&&&&&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&&&&&&&Message msg = new Message();&&&&&&&&&&&&&&&&&&&&msg.what = 3;&&&&&&&&&&&&&&&&&&&&handler.sendMessage(msg);&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&}).start();&&&&}&&&&&@Override&&&&public boolean onKeyDown(int keyCode, KeyEvent event) {&&&&&&&&if(client != null && keyCode == KeyEvent.KEYCODE_BACK) {&&&&&&&&&&&&try {&&&&&&&&&&&&&&&&client.disconnect();&&&&&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&return super.onKeyDown(keyCode, event);&&&&}&&&&&@Override&&&&protected void onDestroy() {&&&&&&&&super.onDestroy();&&&&&&&&try {&&&&&&&&&&&&scheduler.shutdown();&&&&&&&&&&&&client.disconnect();&&&&&&&&} catch (MqttException e) {&&&&&&&&&&&&e.printStackTrace();&&&&&&&&}&&&&}}
由于项目需要,我用到了心跳重连。根据的解释设置apollo.xml,主要有设置主机连接的地址。另外,options还有个setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。
3、新建j2se工程MQTTServer
4、Server代码如下:
import java.awt.C
import java.awt.event.ActionE
import java.awt.event.ActionL
import javax.swing.JB
import javax.swing.JF
import javax.swing.JP
import org.eclipse.paho.client.mqttv3.IMqttDeliveryT
import org.eclipse.paho.client.mqttv3.MqttC
import org.eclipse.paho.client.mqttv3.MqttC
import org.eclipse.paho.client.mqttv3.MqttConnectO
import org.eclipse.paho.client.mqttv3.MqttDeliveryT
import org.eclipse.paho.client.mqttv3.MqttM
import org.eclipse.paho.client.mqttv3.MqttT
import org.eclipse.paho.client.mqttv3.persist.MemoryP
public class Server extends JFrame {
private static final long serialVersionUID = 1L;
private JP
private JB
private MqttC
private String host = "tcp://127.0.0.1:1883";
// private String host = "tcp://localhost:1883";
private String userName = "test";
private String passWord = "test";
private MqttT
private MqttM
private String myTopic = "test/topic";
public Server() {
client = new MqttClient(host, "Server",
new MemoryPersistence());
connect();
} catch (Exception e) {
e.printStackTrace();
Container container = this.getContentPane();
panel = new JPanel();
button = new JButton("发布话题");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
MqttDeliveryToken token = topic.publish(message);
token.waitForCompletion();
System.out.println(token.isComplete()+"========");
} catch (Exception e) {
e.printStackTrace();
panel.add(button);
container.add(panel, "North");
private void connect() {
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
// 设置超时时间
options.setConnectionTimeout(10);
// 设置会话心跳时间
options.setKeepAliveInterval(20);
client.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {
System.out.println("connectionLost-----------");
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------"+token.isComplete());
public void messageArrived(String topic, MqttMessage arg1)
throws Exception {
System.out.println("messageArrived----------");
topic = client.getTopic(myTopic);
message = new MqttMessage();
message.setQos(1);
message.setRetained(true);
System.out.println(message.isRetained()+"------ratained状态");
message.setPayload("eeeeeaaaaaawwwwww---".getBytes());
client.connect(options);
} catch (Exception e) {
e.printStackTrace();
public static void main(String[] args) {
Server s = new Server();
s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
s.setSize(600, 370);
s.setLocationRelativeTo(null);
s.setVisible(true);
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
import java.awt.Container;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;&import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;&import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;import org.eclipse.paho.client.mqttv3.MqttCallback;import org.eclipse.paho.client.mqttv3.MqttClient;import org.eclipse.paho.client.mqttv3.MqttConnectOptions;import org.eclipse.paho.client.mqttv3.MqttDeliveryToken;import org.eclipse.paho.client.mqttv3.MqttMessage;import org.eclipse.paho.client.mqttv3.MqttTopic;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;&public class Server extends JFrame {&&&&private static final long serialVersionUID = 1L;&&&&private JPanel panel;&&&&private JButton button;&&&&&private MqttClient client;&&&&private String host = "tcp://127.0.0.1:1883";//&&&&private String host = "tcp://localhost:1883";&&&&private String userName = "test";&&&&private String passWord = "test";&&&&private MqttTopic topic;&&&&private MqttMessage message;&&&&&private String myTopic = "test/topic";&&&&&public Server() {&&&&&&&&&try {&&&&&&&&&&&&client = new MqttClient(host, "Server",&&&&&&&&&&&&&&&&&&&&new MemoryPersistence());&&&&&&&&&&&&connect();&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&e.printStackTrace();&&&&&&&&}&&&&&&&&&Container container = this.getContentPane();&&&&&&&&panel = new JPanel();&&&&&&&&button = new JButton("发布话题");&&&&&&&&button.addActionListener(new ActionListener() {&&&&&&&&&&&&&@Override&&&&&&&&&&&&public void actionPerformed(ActionEvent ae) {&&&&&&&&&&&&&&&&try {&&&&&&&&&&&&&&&&&&&&MqttDeliveryToken token = topic.publish(message);&&&&&&&&&&&&&&&&&&&&token.waitForCompletion();&&&&&&&&&&&&&&&&&&&&System.out.println(token.isComplete()+"========");&&&&&&&&&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&&&&&&&&&e.printStackTrace();&&&&&&&&&&&&&&&&}&&&&&&&&&&&&}&&&&&&&&});&&&&&&&&panel.add(button);&&&&&&&&container.add(panel, "North");&&&&&}&&&&&private void connect() {&&&&&&&&&MqttConnectOptions options = new MqttConnectOptions();&&&&&&&&options.setCleanSession(false);&&&&&&&&options.setUserName(userName);&&&&&&&&options.setPassword(passWord.toCharArray());&&&&&&&&// 设置超时时间&&&&&&&&options.setConnectionTimeout(10);&&&&&&&&// 设置会话心跳时间&&&&&&&&options.setKeepAliveInterval(20);&&&&&&&&try {&&&&&&&&&&&&client.setCallback(new MqttCallback() {&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void connectionLost(Throwable cause) {&&&&&&&&&&&&&&&&&&&&System.out.println("connectionLost-----------");&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void deliveryComplete(IMqttDeliveryToken token) {&&&&&&&&&&&&&&&&&&&&System.out.println("deliveryComplete---------"+token.isComplete());&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&public void messageArrived(String topic, MqttMessage arg1)&&&&&&&&&&&&&&&&&&&&&&&&throws Exception {&&&&&&&&&&&&&&&&&&&&System.out.println("messageArrived----------");&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&});&&&&&&&&&&&&&topic = client.getTopic(myTopic);&&&&&&&&&&&&&message = new MqttMessage();&&&&&&&&&&&&message.setQos(1);&&&&&&&&&&&&message.setRetained(true);&&&&&&&&&&&&System.out.println(message.isRetained()+"------ratained状态");&&&&&&&&&&&&message.setPayload("eeeeeaaaaaawwwwww---".getBytes());&&&&&&&&&&&&&client.connect(options);&&&&&&&&} catch (Exception e) {&&&&&&&&&&&&e.printStackTrace();&&&&&&&&}&&&&&}&&&&&public static void main(String[] args) {&&&&&&&&Server s = new Server();&&&&&&&&s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&&&&&&&&s.setSize(600, 370);&&&&&&&&s.setLocationRelativeTo(null);&&&&&&&&s.setVisible(true);&&&&}}
上面代码跟客户端的代码差不多,这里就不做解释了。
没什么好说的,MQTT就是这么简单,但开始在使用的时候要注意一些参数的设置来适应项目的需求。
此条目发表在
分类目录。将加入收藏夹。

我要回帖

更多关于 两个activity来回通信 的文章

 

随机推荐