当前位置:  编程技术>移动开发
本页文章导读:
    ▪利用delegate进展ViewController之间的参数传递        利用delegate进行ViewController之间的参数传递 利用delegate进行ViewController之间的参数传递     例子使用2个UIViewController。 点击[第1页]中的按钮[跳到第2页],界面显示第2页。   在[第2页].........
    ▪ MQTT的学习研究(5) MQTT moquette 的 Blocking API 发布消息服务端使用        MQTT的学习研究(五) MQTT moquette 的 Blocking API 发布消息服务端使用   参看官方文档: http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqtat.doc/tt00000_.htm  *  Java 为 MQ Telemetry Transp.........
    ▪ 关于win 八开发总结及对现实的吐槽       关于win 8开发总结及对现实的吐槽 其实很早就想写了,但是一直没什么心情,也因为某某事耽搁了,只能算是一个无知青年对现实的一些吐槽。 我想说几句话,勉励正在路途中的自己。 1:.........

[1]利用delegate进展ViewController之间的参数传递
    来源: 互联网  发布时间: 2014-02-18
利用delegate进行ViewController之间的参数传递

利用delegate进行ViewController之间的参数传递

 

 

例子使用2个UIViewController。


点击[第1页]中的按钮[跳到第2页],界面显示第2页。

 


在[第2页]的参数输入框中输入文字,然后点击按钮[返回第1页],输入的文字将被传递给第1页。

 


第1页的标签上显示从第2页传递来的参数。

 

 

实例代码参见附件!

 

 


    
[2] MQTT的学习研究(5) MQTT moquette 的 Blocking API 发布消息服务端使用
    来源: 互联网  发布时间: 2014-02-18
MQTT的学习研究(五) MQTT moquette 的 Blocking API 发布消息服务端使用

  参看官方文档:

http://publib.boulder.ibm.com/infocenter/wmqv7/v7r0/index.jsp?topic=/com.ibm.mq.amqtat.doc/tt00000_.htm

 *  Java 为 MQ Telemetry Transport 创建异步发布程序
 *在此任务中,您将遵循教程来修改第一个发布程序。通过修改,
 *使应用程序能够发送发布而不等待传递确认信息。传递确认
 *信息由您创建的回调类来接收。
 *
 *
 *
 *4.使客户机断开连接
 *  a.除去其中包含 token.waitForCompletion 表达式的语句。 主线程将继续执行,而不等待传递发布。
 *  b.测试客户机是否已断开连接。 将错误返回到 MqttCallback 中的 lostConnection 方法之后,MQTT 客户机将断开连接,客户机应用程序也可能断开连接。测试是否有打开的连接。
 *  c.使用常量 Example.quiesceTimeout 来设置使客户机停顿的最长时间。
 *  if (client.isConnected())
 *      client.disconnect(Example.quiesceTimeout);
 *当满足下面三种情况的组合形式时,客户机就完成了:
 *  a.已经对在此会话中(如果重新启动了会话,则是在先前会话中)已发布的所有消息调用了回调。
 *  b.消息未完成,然而停顿时间间隔已到期。缺省情况下,停顿时间间隔为 30 秒。通过将要等待的毫秒数作为 client.disconnect 的一个参数来传递,即可更改停顿超时。
 *  c.在发布了某些消息并由客户机进行排队之后,但是在发送这些消息之前调用了 client.disconnect。已排队的消息尚未处于“未完成”状态。如果会话可重新启动,那么重新启动会话时就会重新发送消息。
 *  缺省情况下,停顿时间间隔为 30 秒。

 

MQTT的消息发布代码:

 

package com.etrip.wsmqtt.server;

import com.ibm.micro.client.mqttv3.MqttClient;
import com.ibm.micro.client.mqttv3.MqttDeliveryToken;
import com.ibm.micro.client.mqttv3.MqttMessage;
import com.ibm.micro.client.mqttv3.MqttTopic;
/**
 * 使用 Java 为 MQ Telemetry Transport 创建异步发布程序
 * 
 * 
 * 
 *
 * 消息发布的类的具体的实现
 * 
 * @author longgangbai
 * 
 */
public class WSMQTTServerPubAsync {
	  public static void main(String[] args) {
		    try {
		    	  //创建MqttClient对象
			      MqttClient client = new MqttClient(WSMQTTServerCommon.TCPAddress, WSMQTTServerCommon.clientId);
			     
			      //创建MQTT相关的主题
			      MqttTopic topic = client.getTopic(WSMQTTServerCommon.topicString);
			      
			      //创建MQTT的消息体
			      MqttMessage message = new MqttMessage();
			      //设置消息传输的类型
			      message.setQos(2);
			      
			      //设置是否在服务器中保存消息体
			      message.setRetained(false);
			      
			      //设置消息的内容
			      message.setPayload(WSMQTTServerCommon.publication.getBytes());
			      
			      //创建一个MQTT的回调类
			      WSMQTTServerCallBack callback = new WSMQTTServerCallBack(WSMQTTServerCommon.clientId);
			      
			      //MqttClient绑定
			      client.setCallback(callback);
			      
			      //MqttClient连接
			      client.connect();
			      
			      System.out.println("Publishing \"" + message.toString()
			          + "\" on topic \"" + topic.getName() + "\" with QoS = "
			          + message.getQos());
			      System.out.println("For client instance \"" + client.getClientId()
			          + "\" on address " + client.getServerURI() + "\"");
			      
			      //发送消息并获取回执
			      MqttDeliveryToken token = topic.publish(message);
			      
			      System.out.println("With delivery token \"" + token.hashCode()
			          + " delivered: " + token.isComplete());
			      Thread.sleep(100000000000000l);
			      
			      //关闭连接
			      if (client.isConnected())
			          client.disconnect(WSMQTTServerCommon.quiesceTimeout);
			      System.out.println("Disconnected: delivery token \"" + token.hashCode()
			          + "\" received: " + token.isComplete());
		    } catch (Exception e) {
		      e.printStackTrace();
		    }
	  }
}

 

 

 

MQTT消息发布回调代码:

package com.etrip.wsmqtt.server;

import com.ibm.micro.client.mqttv3.*;
/**
 * 发布消息的回调类
 * 
 * 必须实现MqttCallback的接口并实现对应的相关接口方法
 * 		◦CallBack 类将实现 MqttCallBack。每个客户机标识都需要一个回调实例。在此示例中,构造函数传递客户机标识以另存为实例数据。在回调中,将它用来标识已经启动了该回调的哪个实例。
 * 	◦必须在回调类中实现三个方法:
 * 
 * 	public void messageArrived(MqttTopic topic, MqttMessage message)
 * 	接收已经预订的发布。
 * 
 * 	public void connectionLost(Throwable cause)
 * 	在断开连接时调用。
 * 
 * 	public void deliveryComplete(MqttDeliveryToken token))
 * 		接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。
 * 
 * 
 * 	◦由 MqttClient.connect 激活此回调。
 * 
 * @author longgangbai
 */
public class WSMQTTServerCallBack implements MqttCallback {
	  private String instanceData = "";
	  public WSMQTTServerCallBack(String instance) {
	    instanceData = instance;
	  }
	  /**
	   * 接收到消息的回调的方法
	   */
	  public void messageArrived(MqttTopic topic, MqttMessage message) {
	    try {
	      System.out.println("Message arrived: \"" + message.toString()
	          + "\" on topic \"" + topic.toString() + "\" for instance \""
	          + instanceData + "\"");
	    } catch (Exception e) {
	      e.printStackTrace();
	    }
	  }
	  /**
	   * 消息连接丢失
	   */
	  public void connectionLost(Throwable cause) {
	    System.out.println("Connection lost on instance \"" + instanceData
	        + "\" with cause \"" + cause.getMessage() + "\" Reason code " 
	        + ((MqttException)cause).getReasonCode() + "\" Cause \"" 
	        + ((MqttException)cause).getCause() +  "\"");    
	    cause.printStackTrace();
	  }
	  /**
	   * 
	   */
	  public void deliveryComplete(MqttDeliveryToken token) {
	    try {
	      System.out.println("Delivery token \"" + token.hashCode()
	          + "\" received by instance \"" + instanceData + "\"");
	    } catch (Exception e) {
	      e.printStackTrace();
	    }
	  }
}

 

常量类:

package com.etrip.wsmqtt.server;

import java.util.UUID;
/**
 * 
 * 消息发布消息的常量字段
 * 
 * @author longgangbai
 */
public final class WSMQTTServerCommon {
  //发布broker的ip和端口
  public static final String  TCPAddress =System.getProperty("TCPAddress", "tcp://192.168.208.46:1883");
  //客户端的Id
  public static String clientId =String.format("%-23.23s",  System.getProperty("clientId", (UUID.randomUUID().toString())).trim()).replace('-', '_');
  //发布消息的主题
  public static final String topicString = System.getProperty("topicString", "china/beijing");
  //发布的消息
  public static final String publication =System.getProperty("publication", "Hello World " + String.format("%tc", System.currentTimeMillis()));
  //超时时间
  public static final int quiesceTimeout = Integer.parseInt(System.getProperty("timeout", "10000"));
  
  public static final int  sleepTimeout = Integer.parseInt(System.getProperty("timeout", "10000"));
  
  public static final boolean cleanSession =Boolean.parseBoolean(System.getProperty("cleanSession", "false"));
  
  public static final int QoS =Integer.parseInt(System.getProperty("QoS", "1"));
  
  public static final boolean retained =Boolean.parseBoolean(System.getProperty("retained", "false"));
}

 

 


    
[3] 关于win 八开发总结及对现实的吐槽
    来源: 互联网  发布时间: 2014-02-18
关于win 8开发总结及对现实的吐槽

其实很早就想写了,但是一直没什么心情,也因为某某事耽搁了,只能算是一个无知青年对现实的一些吐槽。

我想说几句话,勉励正在路途中的自己。

1:永远把自己当做混蛋,屌丝,那样就有理由不惜一切代价做自己想做的事。因为混蛋和屌丝是没什么后顾之忧的。

2:  靠自己,真的,求人不如靠自己,没有谁会永远帮你。

3:  没什么不可能,只有想与不想。

4:做人低调谦逊,做事高调靠谱。

5:华丽的想法不及现实行动的一半来的实在。

6:要有小三精神,尽管没地位,坚信有机会。

7:学到的东西永远是自己的,效率,效率。

8:只要身体好,什么都会有的。

9:如果你觉的社会很公平,那只能说明你还年轻。

10:稳重,稳重,年纪不小了,要静得下心,耐得住寂寞。

于是我发现,现实世界中,什么都要靠自己,真的,能用的上的资源少之又少,因此真的需要什么都要去学下,不求人的情况下能自己搞定很多事。我没做到这点。

 

下面开始聊聊win 8开发(XAML+C#)的一些大概细节:

因为JS真的没多少功底,不会去使用HTML+JS,加上对C#不感冒。说到这特想比较Java和C#,就像找女朋友,C#就是那种长的很漂亮的女孩,但家务活不行,而java就是那种一点付出,为你默默无闻的女孩。

现在Metro一词,因为涉及使用权问题,Metro微软已经弃用了。但我们在7月多的时候接触的时候还是习惯叫win 8 Metro App。大概在2月份相信已经有不少人就开始接触了,毕竟老外的东西TM全是英文,英语本来就不咋di的我们弄起来非常吃力。只能看写实例来完善自己需要的东西。其中有一本书,叫《Metro Revealed Building windows 8 appswinth XAML and C#》在它在Apress.com可下载书中例子(我想说的是,在牛X的参考资料都没有微软开发者中心的资料齐全,但是初学者会觉的非常乱,无从开始下手,所以还是先把门路弄熟,在去官网学,才是正道啊)。

涉及知识点:1:AppBar的使用----》2:页面导航-----》3:弹出画面Flayouts----》4:分屏技术----》5:弹出菜单--》6:Snapped模式和动态磁贴 ----》7:Appbar和FilePicker---》8:数据绑定进行显示数据

可以发现是不是没有数据库操作?是的,但是可以使用sqllit数据库,关于sqllite的操作安装相信博客写的很清楚,但是正常人会使用webservices的形式经行数据存储和交互,也可以理解为数据绑定的应用吧。如果数据量不大的话正常情况会用XML或者JSON(JSON听起来是一种新鲜玩意,因为之前没接触过但其高效的数据交互方式,你不得不学下,这里不做过多介绍)。

正常人刚开始接触的时候都会从下面开始吧:

1:在VS2012中新建工程,然后打开App.xaml,可以猜测这个肯定是程序执行的入口点就像main()方法,在其子节点还会有这个App.xaml.cs这个文件,叫代码后置,关于其中原理,我也只是略懂,winform开发的兄弟们都知道的。

在App.xaml.cs的OnLanunched()是在应用开始执行的时候被调用的。因此可以在这个方法中找到你需要的page作为启动页面(rootFrame.Navigate(TypeOf()))。

2:在工程中,StandandStyles.xaml是应用的资源文件

3:在工程中,Package.appxamifest文件是应用设置文件

我想前面这三个东西,是整个工程中最最核心的东西了。

忘了介绍了,还有一个叫XAML,(读作藏么),不过多赘述。如果放在web开发中,应该可以说成是Html+css之类的东西。无疑是先进行视图模型的定义到开始设计用户界面XAML就是前台,在这里可以画出你想要让用户看到的界面。刚才说到资源文件,这是个好东西,用户可以自己定义自己用的着的资源文件,比如TestButtonStyle这个就是在StandandStyles.xaml中定义的。

<ButtonStyle=”{ StaticResourceTextButtonStyle}” HorizantalAliginal=”center”

Click=”ButtonClick”> Click Me!</Button>

上面  StaticResourceTextButtonStyle中就是使用了StandandStyles.xaml中定义的TestButtonStyle样式。

XAML对于已经有servlight和wp7开发经验的人来说已经不是什么了。我记得最深的就是在

XAML中的X:name属性了。

在做这个的同时,也经常把win 8与Android经行比较,说真的,与C#相比之下Java还是学的比较好的。虽然大家都知道C#其实与JAVA差不多,就是类库变下有些关键字的用法变下。

就像找女朋友,C#就是那种长的很漂亮的女孩,但家务活不行,而java就是那种为你默默无闻付出的女孩,可能长的不咋di。语言的东西相通相融,今后的目标也是学把掌握的好的语言先学精,然后再去接触新的语言。

每天告诉自己,努力,努力,再努力。


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
编程语言 iis7站长之家
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3