当前位置:  编程技术>移动开发
本页文章导读:
    ▪设立 ListActivity的setEmptyView()        设置 ListActivity的setEmptyView()原问题来自于CSDN问答频道,更多见:http://ask.csdn.net/questions/1656 原问题描述: 设置一个 ListActivity的默认view。 我试过: TextView emptyView = new TextView(this); emptyView.se.........
    ▪ Xcode工具静态稽查分析代码        Xcode工具静态检查分析代码 Clang静态分析和Instruments来剖析代码有一些不同,Clang更致力于在编译的过程中通过自身的一套判断机制来找出代码中潜在的隐患。   在XCode 3.2之后的版本里,Cl.........
    ▪ MifareClassic卡自定义keyA跟keyB       MifareClassic卡自定义keyA和keyB 请先阅读《读写MifareClassic协议的NFC卡》一文了解MifareClassic卡的相关知识。 根据MifareClassic卡的的相关协议,如果要自定义自己的keyA和keyB,以使自己写入的到卡中.........

[1]设立 ListActivity的setEmptyView()
    来源: 互联网  发布时间: 2014-02-18
设置 ListActivity的setEmptyView()

原问题来自于CSDN问答频道,更多见:http://ask.csdn.net/questions/1656

原问题描述:

设置一个 ListActivity的默认view。

我试过:

TextView emptyView = new TextView(this);
    emptyView.setText("No lists available");
    this.getListView().setEmptyView(emptyView);

但是没实现。

问题出在emptyView没有绑定别的东西。如果你用addView():

TextView emptyView = new TextView(this);
((ViewGroup) getListView().getParent()).addView(emptyView);
emptyView.setText("It's empty!");
getListView().setEmptyView(emptyView);


就可以了。
写了一简单的交替empty和full的:

public class Example extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView emptyView = new TextView(this);
        ((ViewGroup) getListView().getParent()).addView(emptyView);
        emptyView.setText("It's empty!");
        getListView().setEmptyView(emptyView);

        getListView().postDelayed(new Runnable() {
            @Override
            public void run() {
                if(getListAdapter() == null)
                    setListAdapter(new ArrayAdapter<String>(Example.this, android.R.layout.simple_list_item_1, new String[] {"It", "Has", "Content"}));
                else
                    setListAdapter(null);
                getListView().postDelayed(this, 2000);
            }
        }, 2000);
    }
}



 


    
[2] Xcode工具静态稽查分析代码
    来源: 互联网  发布时间: 2014-02-18
Xcode工具静态检查分析代码

Clang静态分析和Instruments来剖析代码有一些不同,Clang更致力于在编译的过程中通过自身的一套判断机制来找出代码中潜在的隐患。

  在XCode 3.2之后的版本里,Clang已经被集成进来,Static Analysis 是基于 Clang 的非常好的静态代码分析工具。可以从xcode直接运行Static Analysis 分析器。

  Static Analysis 优点:

  1、使用操作容易。

  2、能够在编码阶段,开发自行进行代码检查。早期发现代码隐患。

  3、直接分析源代码来发现程序中的错误,而不需要实际运行。

  4、自动检测objective-C程序中的BUG,发现内存泄露和其它问题。

  5、内存问题发现越早,解决的代价就越小。

  使用方法:

  1、确保你的程序没有被编译过(编译过了就使用Clean all targets清除编译)

  2、点击Product > Analyze如下图:

  3、如果你的程序代码有问题,在编译完成之后,右下角的原来提示warning 和 error的地方现在变成了这样:

  4、现在你可以像解决以前的warning 或者 error一样,对提示的地方点进去。

  5、可能会存在问题的一些情况:

  各处内存泄漏:

  对象引用隐患(内存已释放可能又被使用了)


未使用到的函数:

  未初始化的变量

  数据赋值隐患:

  The left operand of …… is a garbage value

  分析解决方法(例:内存泄露)

  1、点击左侧对应内存泄露某处,右侧显示泄露行

  2、双击行所对应的信息,显示交互详情

  3、修改代码,解决泄露问题。

  4、修改后再次静态扫描发现,错误从40减到39,修复的代码行已不再出现错误。

  注:上述工程截图为测试Demo

  建议使用场景:

  1、建议在开发编码阶段使用,直接分析源代码来发现程序中的错误,而不需要实际运行,提前发现代码隐患。

  2、测试在冒烟测试时可先进行扫描,错误太多代码修改量太大的情况下可暂不介入测试,以免造成返工。

  个人使用感受:

  淘宝读书客户端ihone1.0版本,缺少经验,在性能测试执行阶段进行该静态扫描,功能测试返工情况较严重。

  在2.0版本中,推荐给开发,在开发编码中就较大部份内存泄露问题进行了解决,特别是需要release和缺少dealloc的地方。

  在之后使用instruments内存泄露测试中,泄露少,只需进行较少的代码改动,功能回归工作量小。

  个人觉得是一款非常简单又实用的的IOS代码静态检查工具,值得推荐给IOS开发同学和IOS性能测试同学。


如果在内存泄露中出现  potential leak of an object stored into

解决办法:创建变量的时候尽量使用静态创建,因为静态方法都添加了anturelease,若使用alloc,init时后面最好加上autorelease









    
[3] MifareClassic卡自定义keyA跟keyB
    来源: 互联网  发布时间: 2014-02-18
MifareClassic卡自定义keyA和keyB

请先阅读《读写MifareClassic协议的NFC卡》一文了解MifareClassic卡的相关知识。

根据MifareClassic卡的的相关协议,如果要自定义自己的keyA和keyB,以使自己写入的到卡中的信息只有知道key值的人才能读写,必须往要操作的区中的Block 3即Trailer块写入数据。下图是Block 3的数据示例:

如图,我们只需定义要写入到Trailer块及keyA、keyB的数据分别为:

[java] view plaincopy
  • byte authBlockData[] = { (byte) 0xAA, (byte) 0xAA, (byte) 0xAA,  
  •         (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte)0xFF, (byte)0x07, (byte) 0x80,  
  •         (byte)0x69, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB,  
  •         (byte) 0xBB, (byte) 0xBB };  
  • byte keyA[] = { (byte) 0xAA, (byte) 0xAA, (byte) 0xAA, (byte) 0xAA,  
  •         (byte) 0xAA, (byte) 0xAA };  
  • byte keyB[] = { (byte) 0xBB, (byte) 0xBB, (byte) 0xBB, (byte) 0xBB,  
  •         (byte) 0xBB, (byte) 0xBB };  
  • 第一次往Block 3中写数据时仍然使用MifareClassic.KEY_DEFAULT,写入完成后则使用新定义的keyA和keyB进入数据的写入和读取了。至此,实现了MifareClassic卡自定义keyA和keyB功能。
    相关可执行程序:http://download.csdn.net/detail/viviwen123/5131034。源码只实现了对MifareClassic卡的读写功能,未进行keyA和keyB的修改,读者根据本文稍做修改即可实现此功能。



        
    最新技术文章:
    ▪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