Android基础的xml文件创建,解析,以及安卓下的消息机制

2024-04-17 11:32

本文主要是介绍Android基础的xml文件创建,解析,以及安卓下的消息机制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

##Android下的消息机制.
* 子线程不可以修改ui.
* 只有主线程才可以修改ui.
* 如果子线程想更新ui就必须利用消息机制处理
* Handler : 消息处理器, 可以发送消息给主线程的消息队列.
* Message Queue: 消息队列,主线程里面的一个消息队列.
* Looper : 轮询器,检查消息队列里面是否有消息.---> HandleMessage();


XML的创建,使用android自带的api
    // 1.得到xml文件的序列化器
    XmlSerializer serializer = Xml.newSerializer();
    // 2.指定序列化器的一些初始参数
    File file = new File(getFilesDir(), name + ".xml");
    FileOutputStream os = new FileOutputStream(file);
    serializer.setOutput(os, "utf-8");
    // 3.写xml文件.
    serializer.startDocument("utf-8", true); 写开头
    serializer.endDocument(); 写结尾
    serializer.startTag(null, "number"); 开始标签
    serializer.endTag(null, "number"); 结束标签
    serializer.text() 写文本标签
    serializer.attribute(null, name, value) 写属性
            
            
XML的解析,用android的api      
    //1.获取到一个xml解析器
    XmlPullParser parser = Xml.newPullParser();
    //2.设置解析器的初始化参数
    FileInputStream inputStream = new FileInputStream(file);
    parser.setInput(inputStream, "utf-8");
    //3.解析xml文件
    int type = parser.getEventType(); //得到 第一个!! 事件的类型.
    XmlPullParser.START_TAG 开始节点
    XmlPullParser.END_TAG 结束节点
    parser.nextText(); <tag>foo</tag> 取两个节点中的foo文本
    parser.getName(); 获取当前节点的名称
    parser.next(); 让解析器解析下一个节点.

      


junit单元测试
    首先要在清单文件中配置,两个标签
      <!-- 测试的指令集 --> 配置在manifest节点下!!
    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="(应用程序的包名)"></instrumentation>
    
        <!--  测试需要的jar包 --> 放在application节点下!
        <uses-library android:name="android.test.runner"/>
        
        
    如果要写测试类要继承AndroidTestCase
    TestCalcService extends AndroidTestCase
    
    方法public void testAdd() throws Exception 要记得抛出异常
    
    如果忘记标签的名字怎么写了,可以创建一个android Test Project 然后看看它的AndroidManifest.xml文件,复制过去就可以了,但是要注意改包名!!

    
    
logcat  android下显示日志的位置,所有的日志都是显示在logcat里面的
        
        
        Log.v(tag , "我是verbose级别的日志");//verbose 提醒
        Log.d(tag, "我是debug级别的日志");//debug 调试
        Log.i(tag, "我是info级别的日志");//info 信息
        Log.w(tag, "我是警告级别的日志");//warn 警告
        Log.e(tag, "我是错误级别的日志");//error 错误
        Log.wtf(tag, "重大异常");// what the fuck 艹
        
        System.out.println(); //有的时候老师用这个日志是习惯问题,图方便,但是实际开发中的时候
                              //还是多用Log这种日志比较好,tag这个值一般采用当前的类名
                              
        当从logcat找错误的时候,一般先从下网上找,找到错误  --》 (例子)Cause By:NullPointException,
        然后再往下找。一直找到自己的包名,然后双击选中那一行就可以快速的定位到错误的位置!
        
        如果有的时候没有Cause By,那么就一直网上找,直到有说明的原因

这篇关于Android基础的xml文件创建,解析,以及安卓下的消息机制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/911684

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存