当前位置:  编程技术>移动开发
本页文章导读:
    ▪xcode施用(二)        xcode使用(二)内存检查工具       1.xcode----product-----Analyze     内存泄漏隐患提示:Potential Leak of an object allocated on line ……      数据赋值隐患提示:The left operand of …… is a gar.........
    ▪ Java中的事件、监听器的简略例子        Java中的事件、监听器的简单例子Java事件机制包括三个部分:事件、事件监听器、事件源。其中事件类中包含事件源的实例,来标识事件的发出者;事件监听器类则包含了事件被触发时的响应.........
    ▪ 花了几火候间了解了下Xamarin       花了几天时间了解了下XamarinXamarin是mono项目的一个分支,但这里面最大的区别Xamarin是商业项目.mono做为跨平台的框架已得到越来越多的商业项目的肯定,令外界担心的版权问题\可靠性\稳定性也.........

[1]xcode施用(二)
    来源: 互联网  发布时间: 2014-02-18
xcode使用(二)

内存检查工具

      1.xcode----product-----Analyze

    内存泄漏隐患提示:Potential Leak of an object allocated on line ……
     数据赋值隐患提示:The left operand of …… is a garbage value;
     对象引用隐患提示:Reference-Counted object is used after it is released;

    2.xcode---product----Profile----Leak

    可看出是出现内存泄露的object  后面还能具体看出是哪个类的实例还可以点击leak工具的view视图布局方式的第三个按钮 

    3.xcode---product---Profile--Allocations

   可以很容易的列出所有分配内存的点,这样我们可以按照分配内存大小来进行排序, 这样可以很容易的发现哪些点分配的内存最多,而且是持续分配,这样我们来针对性的分析这些持续分配较大内存的地方;此工具会显示出所有申请内存的地方,并统计申请的次数和大小; 从这个列表中可以找出内存申请次数最多且申请内存最大的语句;从而分析出哪些地方使用的内存最多,进而可以优化和改进;


     内存泄漏问题博客 http://blog.sina.com.cn/s/blog_3e99b31301014d1d.html


    
[2] Java中的事件、监听器的简略例子
    来源: 互联网  发布时间: 2014-02-18
Java中的事件、监听器的简单例子

Java事件机制包括三个部分:事件、事件监听器、事件源。其中事件类中包含事件源的实例,来标识事件的发出者;事件监听器类则包含了事件被触发时的响应函数,业务逻辑写在该响应函数中;而事件源则有一个事件监听器列表,当事件触发时,通知所有的监听者,采用的是观察者模式 (发布-订阅模式)。


1、事件类。一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息。

import java.util.EventObject;

/** 
 * @Title: ValueChangeEvent.java 
 * @Package  
 * @Description:  
 * @author Mr.Simple bboyfeiyu@gmail.com 
 * @date Apr 5, 2013 2:10:39 PM 
 * @version V1.0 
 */


/**
 * 事件类,包含了事件源
 * @ClassName: ValueChangeEvent 
 * @Description: 
 * @author Mr.Simple 
 * @date Apr 5, 2013 2:12:37 PM 
 *
 */
public class ButtonClickEvent extends EventObject {

	/**
	 * 字段:
	 */
	private static final long serialVersionUID = 1L;
	// 事件源
	private Object mSourceObject = null;
	private String mTag = "";
	
	/**
	 * 构造函数
	 * @param sObject
	 */
	public ButtonClickEvent(Object sObject){
		super(sObject);
		mSourceObject = sObject;
	}
	
	/**
	 * 构造函数
	 * @param sObject
	 * @param tag
	 */
	public ButtonClickEvent(Object sObject, String  tag){
		super(sObject);
		mSourceObject = sObject;
		mTag = tag;
	}
	
	/**
	 * 获取事件源
	 * (non-Javadoc)
	 * @see java.util.EventObject#getSource()
	 */
	public Object getSource() {
		return mSourceObject;
	}
	
	/**
	 * 
	 * @Title: setSource 
	 * @Description: 设置事件源
	 * @param obj    
	 * @return void    
	 * @throws
	 */
	public void setSource(Object obj) {
		mSourceObject = obj;
	}
	
	/**
	 * 
	 * @Title: getTag 
	 * @Description: 获得tag
	 * @return    
	 * @return String    
	 * @throws
	 */
	public String getTag(){
		return mTag;
	}
	
	/**
	 * 
	 * @Title: setTag 
	 * @Description: 设置tag
	 * @param tag    
	 * @return void    
	 * @throws
	 */
	public void setTag(String tag) {
		mTag = tag;
	}

}
  

2、事件监听器。实现java.util.EventListener接口,注册在事件源上,当事件源触发事件时,取得相应的监听器调用其内部的回调方法。

	/**
	 * 
	 * @ClassName: ButtonClickListenerInner 
	 * @Description: 内部类的写法
	 * @author Mr.Simple 
	 * @date Apr 5, 2013 2:41:02 PM 
	 *
	 */
	private static class ButtonClickListenerInner implements EventListener{
		/**
		 * 
		 * @Title: ItemClicked 
		 * @Description: 点击事件
		 * @param event    
		 * @return void    
		 * @throws
		 */
		public void ButtonClicked(ButtonClickEvent event ) {
			// 获取事件源
			ButtonDemo source = (ButtonDemo)event.getSource();
			System.out.println("内部静态监听类@_@ 你点击的是 : " + source.getItemString()) ;
		}
	}

3、事件源。事件触发的地方,由于事件源的某项属性或状态发生了改变(比如Button被单击等)导致某项事件发生。换句话说就是生成了相应的事件对象。因为事件监听器要注册在事件源上,所以事件源类中应该含有用来存储事件监听器的容器(List,Set等等)。

/**
 * 
 * @ClassName: ListViewDemo 
 * @Description: 事件源模拟类,采用的是观察者模式
 * @author Mr.Simple 
 * @date Apr 5, 2013 2:18:34 PM 
 *
 */
public class ButtonDemo {
	// item文本文字
	private String mItemName = "";
	// 监听器哈希集合,可以注册多个监听器
	private Set<EventListener> mClickListeners = null ;
	
	/**
	 * 构造函数
	 *
	 */
	public ButtonDemo(){
		//  监听器列表
		mClickListeners = new HashSet<EventListener>();
		mItemName = "Defualt Item Name";
	}
	
	/**
	 * 构造函数
	 * @param itemString
	 */
	public ButtonDemo(String itemString){
		mItemName = itemString;
		mClickListeners = new HashSet<EventListener>();
	}
	
	/**
	 * 
	 * @Title: AddItemClickListener 
	 * @Description: 添加监听器
	 * @param listener    
	 * @return void    
	 * @throws
	 */
	public void AddItemClickListener(EventListener listener){
		// 添加到监听器列表
		this.mClickListeners.add(listener) ;
	}
	
	/**
	 * 
	 * @Title: ItemClick 
	 * @Description: 模拟点击事件,触发事件则通知所有监听器    
	 * @return void    
	 * @throws
	 */
	public void ButtonClick() {
		// 通知所有监听者
		Notifies() ;
	}
	
	/**
	 * 
	 * @Title: Notifies 
	 * @Description: 通知所有监听者   
	 * @return void    
	 * @throws
	 */
	private void Notifies() {
		Iterator<EventListener> iterator = mClickListeners.iterator();
		while (iterator.hasNext()) {
			// 获取当前的对象
			ButtonClickListenerInner listener = (ButtonClickListenerInner) iterator.next();
			// 事件触发,事件的构造函数参数为事件源
			listener.ButtonClicked(new ButtonClickEvent(this));
			
		}
	}
	
	/**
	 * 
	 * @Title: getItemString 
	 * @Description: 返回该项的名字 
	 * @return String    
	 * @throws
	 */
	public String getItemString() {
		return mItemName;
	}
	
	
	/**
	 * 
	 * @Title: main 
	 * @Description: main方法
	 * @param args    
	 * @return void    
	 * @throws
	 */
	public static void main(String[] args) {
		ButtonDemo buttonDemo = new ButtonDemo("Hello, I am a ButtonDemo") ;
		// 添加监听器
		buttonDemo.AddItemClickListener(new ButtonClickListenerInner()) ;
		// 事件触发
		buttonDemo.ButtonClick();
	}


输出结果如下 :


下载链接 : http://download.csdn.net/detail/bboyfeiyu/5222920



    
[3] 花了几火候间了解了下Xamarin
    来源: 互联网  发布时间: 2014-02-18
花了几天时间了解了下Xamarin

Xamarin是mono项目的一个分支,但这里面最大的区别Xamarin是商业项目.mono做为跨平台的框架已得到越来越多的商业项目的肯定,令外界担心的版权问题\可靠性\稳定性也得到证实,使用mono最大的好处是可以使用其它平台众多的项目,而不必被限制在windows平台下贫乏而又昂贵的各种.本人花一个星期的时间对Xamarin进行了解,并且尝试对它的环境进行配置,测试.从而写出本文.


本人去了解Xamarin的主要目的是为了移动项目跨平台寻找更优的开发方案.Xamarin官方号称在android\iphone\ipad\mac\windows phone\windows 8已实现跨平台,并且实现跨平台可以重用90%的代码.

根据从mono的跨平台实现原理,了解到Xamarin也是采用gtk#作为ui层,但令人沮丧的是Xamarin下的ui层并不能跨平台,具体原因不理解是为什么,我猜大概还是因为某些人为的限制,因为gtk做为跨平台的UI层在技术层早已不是问题.

Xamarin提供了试用版本,但是在线安装的形式,只因采用这个国度的网络,,两天没安装成功只得放弃这种方式,好在有好心人整理了离线安装的方式,通过离线安装方式安装成功.但很多功能不能使用,需要破解,,,为了更多地了解这个软件,我无耻地用破解工具破解掉了Xamarin...

Xamarin带了Xamarin studio,但只能做android下的开发,这是我比较纳闷的一点.

Xamarin还提供了for vs2010  vs2012的插件,这个是比较吸引人的地方.但插件里面只有android\ios类型的项目,更多其它平台上的项目都没有.ios的项目的编译和调试需要xcode支持,则说明还需要一台mac的系统以及xcode环境,以及一个装在mac上的辅助软件Xamarin.ios,Xamarin.ios是运行在mac上的软件,用来负责编译和调试软件,并且把结果通过socket通信反应到IDE上.但官方并没有提供这个软件的下载或试用.是购买授权用户的特权.


因此我的进一步了解中断了,但我已决定是放弃Xamarin的时候了,,当前用它做跨平台的项目还不成熟,主要体现在以下几个方面


毕竟是新项目,用户少,可用资源少,遇到问题要么自己硬啃,要么等几天的时间让官方技术支持帮解决

  • 官方只提供了在线文档,在这个朝代访问国外网站的效率,你懂的.
  • Xamarin是商业项目,并不开源,因此无法预测到那框架哪个部分会有bug,一旦框架出现问题,只能坐等官方更新.
  • Xamarin的api更新总是要慢于智能手机系统提供商发布的api,说明你无法使用最新的api
  • Xamarin是商业软件,要花钱,即便是调研它的可行性都很难,除非花钱买授权后再调研,没人这么有钱,没人这么闲
  • 除了官方的说明,没看到有对android\ios\mac以外的开发资源与环境,这个是莫须有?




    
最新技术文章:
▪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实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪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