如何快速学习android开发的(一)

article/2025/9/6 23:11:47

因为项目需要,8月中旬开始决定做安卓的程序,所以马上就开始学习安卓方面的开发知识,把最近的学习实践经历和大家分享分享。不要一开始就下载一大堆资料,视频,然后就不知道做什么了,要给自己定个目标,我要做什么?我怎么达到目标? 

我不懂java,但是懂C#和C++,所以我没主张去单独学习java语言,如果你是个最最初的新手,没啥语言基础,那你必须先看看java语言,不要很详细看,因为学习Android中,你也是在学习java。 

        1. 明确目标

没有目标的学习,会感觉到后面没什么成果,在1年前,我也打算学习android开发的,但是目的就是学习,到网上去下载很多学习的视频,然后把开发环境搭建起来,能把Helloworld运行起来,能打些log,Activity之间也能互相切换了,但是后面也就不了了之了,因为不知道学了要干什么。依葫芦画瓢的做了几个例子,因为里面的问题都是已经解决的,所以也没能深入的系统学习。

 这次因为产品的需要,要做Android版本,要做的东西一开始就已经设计好了,见摇摇2选1安卓版本,刚开始也不知道里面有些什么技术难度,但是要做的目标已经明确了,而且也没有现成的,碰到问题就查资料,慢慢地解决,这样有的放矢,学习的效果非常好。既有现成的技术可以使用,又有些技术,需要查比较多的资料,这样记忆就比较深刻,所掌握的知识也比较系统。

接下来的一系列文章,我会把在开发摇摇2选1中遇到的问题,给大家详细讲讲,程序虽然小,但是五脏俱全,做Demo和做产品的要求完全不是一个级别,如果Android大牛感觉知识讲的比较浅,那可以绕道,毕竟我是从一个完全的新手开始的。

 

        2. 了解安卓开发中比较困难的地方

学习一个新平台,就要知道此平台开发要面临的困难有哪些,不要做到最后,这些问题没有考虑,那就比较糟糕了。在网上搜索了下,安卓开发困难总结如何:

1)安卓系统版本比较多,各版本之间的兼容性是个问题,此为系统碎片。

2)安卓设备千变万化,设备难以统一,每个产品都成为独立,分散的Android碎片。

3)分辨率五花八门。一个产品,可能需要多个界面排版,人工消耗比较大。

 

看到这张图,有没有头疼的感觉? 

总结成一句话:Android的碎片化真是要来开发者的命。 

 

        3. 搭建开发环境

"巧妇难为无米之炊",开发环境肯定是第一件要做的事情,这类的文章已经很多了,我也不多说了,多说也就比较无聊了。感谢吴秦,也是博客园里的一员,他写的很详细了,见这里。

 

        4. 查看网友总结的一些经验。

             不是什么都查看,开发中遇到什么问题,就去查看什么问题,这样你查到的知识,马上就能深入的实践,这样知识就巩固了。

     1)首先当然要看Android的开发文档,里面其实大部分的知识都有了,还有就是SDK自带的Samples。

     2)博客园里搜索“Android开发”,会出来一大把,很多网友都是很系统的讲解了。

     3)eoe android社区,里面有很多网友上传了现成的demo代码,里面很多都是模仿现在流行的产品的界面开发,很是不错。

 

        5. 掌握调试方法

个人一直认为,调试技巧是开发中最重要的技能,如果调试技能比较差,不知道如何查找问题,那不会是个好的程序员,其技能也不会高到哪里去。 

  Android做下来,感觉调试这块做的很不错了,这要感谢Eclipse IDE做的比较不错,但是Android的界面排版部分,真的不敢恭维,Eclipse时间用长了,占用内存真是大。有哪位高手能否告诉我下,你们界面排版是用什么的?

Android里,如果程序出了问题,有些是一下跟踪不到的,这时就要用到Log类了,Log类使用很简单,就不多说了。
  自己一个很有感触的经验,如果你真的打算做Android开发,那就买一个设备,这样能大大提高开发效率,模拟器有时用起来真是麻烦,而且开发的设备不要很好的,只要设备分辨率是主流的,传感器的支持最好全点就够了,国产的手机里,华为的还不错,或者到淘宝上去买个二手的,投资不大。真的买了投资,可能也会增加你学习Android的决心。

       

6. 程序框架

经过10多年的经历,认识到程序的框架对开发产品真的是起到举足轻重的作用。一个好的产品,如果有个好的程序框架,那真是事半功倍,可能开始所做的工作会比较多,很难看到令人激动的成果,但是相信我,绝对值得。一开始,我也是比较注重程序界面开发,很快就开发出界面来,而且着实比较激动,因为有东西出来了,但是后面的事情,真是令人发狂,想从头再来,太迟了,离计划的时间比较近了,时间不允许,只有硬着头皮往上打补丁,硬着交付第一个版本,第二个版本或者后面的版本,迟早是要重来的。所以在后面带领团队开发的时候,在开发前,都是要讨论程序框架,留出很大部分时间进行程序框架开发,及在开发中不断的改进。

刚接触Android,不知道用什么程序框架,所以查了很多资料,一开始看到一个程序框架,感觉很不错,所以一开始就使用了下面这个程序框架。

开始这个框架用的蛮爽,简单介绍一下,主UI线程如果要做一个比较长时间的任务,创建一个任务,发送到任务队列中去,后台的Service不断的从任务队列中去取任务,然后交给线程处理,线程处理完后,通过消息(Message)发送到Handler里处理,然后Handler的handleMessage函数里回调到UI主线程中去。

此框架的缺点是比较麻烦。

1)首先这里有个Observer模式,每个Activity都要实现一个接口,然后注册到后台服务中去,这样后台服务才能把处理的结果回调到主线程中。

2) 每个事件都要组成一个任务,发送到任务队列。

3)后台线程先要取任务,然后处理,然后通过消息切换到主线程,然后又回到到相应的Activity中,中间有个3次判断当前是什么任务。

4)不能并非,任务只能一个接一个,虽然这个一般不会造成瓶颈。

因为摇摇2选1应用比较简单,所以后来感觉只要使用线程和Handler,通过消息就能处理,然后就查资料,发现已经有比较多的文章描述了这种方法,只是没提出这是一个框架,但是对摇摇2选1,我感觉已经足够了。下面就是主代码,分布在每个Activity中:

private void TaskThread() 

{

Thread taskThread = new Thread()

{

@Override public void run()

{

//做耗时的任务 

 Message msg = Message.obtain();

msg.what = 1;

uiCallback.sendMessage(msg);

}

};

taskThread .start();

}

private Handler uiCallback = new Handler()

{

@Override public void handleMessage(Message msg)

{

if(msg.what == 1)

{

//在主线程中处理结果 

}

}

};

  够用就好,至少我现在用着很爽。

 

7. 程序国际化

互联网让地球成为一个村,所以一开始也需要了解一下程序是如何做国际化版本的。不要一开始字符串满天飞,整个程序中都存在hard code,这样做,迟早是要吃亏的。

 

8.产品升级机制

一个方便的产品升级机制,对产品的成长很重要,android是一个开放平台,在这点上比iOS做的好的多,产品升级很方便。 

 

此文章的目的就是对想学Android开发的人一个指引,因为我也就是这么走过来的,加上自己在软件开发上的一些经验,让新手少走弯路。有计划,有目标的学习,这是最好的方法。


http://chatgpt.dhexx.cn/article/8XC6lKHK.shtml

相关文章

安卓学习之

表格布局包含一系列的 TableRow对象,用于定义行(实际上你也可以使用其它子对象,将在后面进行解释)。表格布局不为它的行、列和单元格显示表格线。每个行可以包含0个以上(包括0)的单元格; 每个单…

通过安卓逆向来学习安卓开发

记一次逆向学习的过程 起因:最近在做bilibili缓存视频合并工具,适配Android 11时需要获取Android/data目录的读取权限,根据APP“清浊”开发者的帖子: 如何评价在Android11中,/Android/data文件夹无法读写?…

初学安卓framework系列 一 (怎么科学的学习安卓系统的framework)

相信大家在找工作的时候,肯定或多或少都被面试官问到过安卓的八股文。比如ActivityManagerService(简称AMS),或者WindowManagerService(WMS) 怎么实现的啊,有些什么细节需要注意啊,View被加入到ViewRoot的流程啊等等。每每看到这些…

关于自己学习安卓的体会

笔者学习了一段时间的安卓,有几个特别深的感触。 第一点。安卓开发虽然用的是JAVA语言(虽然有Kotlin但是笔者还没接触到),但是在大部分的开发过程中,基本都是重写各种类,自己写的东西比较少(这只…

【0】开始学习安卓了

说好的学习安卓,于是我就要开始学习安卓了,敢问安卓学习哪家强?? 一、准备好开发工具 (1)安卓SDK,建议用迅雷下载 (2)JDK,win764位的请到官网下载64位的 下载…

Android 学习(一)

安卓基本学习 架构体系 安卓的系统体系架构采用的是分层的架构 Kemel层: Android平台的基础。有线程管理和内存管理等功能。 HAL层: HAL的目的是为了把framework与Kernel隔开,让Android不至于过度依赖kernel,对kernel的简单封装…

安卓的学习

文章目录 第一节课:动/静态图片第二节课:一:按键监听事件二:界面中的文本框控件的文本内容自动与文本标签内容保持一致 第三节课一:点击增加的进度条二、获取按钮的信息二 可点击的列表 第一节课:动/静态图…

安卓基础学习

文章目录 前言工具创建项目简单控件即UI一、界面显示与逻辑处理二、文本三、布局 四、按钮五、控件综合训练(简易计算器)六、Activity七. 中级控件八、综合案列(登录与找回密码)数据存储一、SharedPreferences二、SQLite 九、外部存储空间十、Jetpack Room十一、正文字数太多&a…

【ANDROID学习】

Eclipse开发Android程序DEBUG 一 .虚拟机启动失败 报错信息: emulator: ERROR: x86_64 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: Please disable Hyper-V befo…

Android基础学习整理知识点

注:本文内容有自己理解部分,若有不对的地方,欢迎指出。 Android四大组件 Activity 什么是Activity? 是应用程序的组件,用于显示用户界面,可以与用户交互完成相关的操作。App中可以有很多个Activity。 Activity存储…

Android基础知识点学习总结

Android基础知识点学习总结 安卓基础知识个人学习笔记分享~ 一、Android系统架构 Linux内核层→系统运行层→应用框架层→应用层 1、Linux内核层:Android系统是基于Linux内核的,这一层为硬件提供了底层的驱动,例如显示驱动,音…

锚点的作用及用法

锚点的作用及用法 HTML中的a标签大家都非常熟悉,它是超链接标签,通过a标签能够跳转到href中指定的页面及指定的位置,a标签可以做到单页面跳转或多页面跳转,锚点能够跳转到当前页面中指定的位置,也能够跳转到指定的…

vue锚点的用法

一、锚点效果 二、示例 跳转到当前页面中指定的位置 <a href"#demo1">跳转到一的位置</a> <a href"#demo2">>跳转到二的位置</a> <a href"#demo3">>跳转到三的位置</a><div id"demo1"…

用html语句超链接锚点使用,HTML 锚点超链接

先介绍下场景: 我做了一个博客管理 首页界面如下: 标题是超链接,点击标题,进入博客详情页面: 博客标题下面有一个"返回"超链接,点击回到博客列表,超链接代码: 返回 说明:com.whuang.hsj.hrefClickCount的初始值为-1 , 后来我发现有的博客很长,从博客底部回到标题那儿…

UGUI锚点适配

UGUI锚点设置 UGUI锚点锚点图锚点类型锚点类型一&#xff1a;相对于父节点的某一点的位置锚点类型二&#xff1a;与父节点的两边保持固定距离与父节点的左右两边保持固定距离与父节点的上下两边保持固定距离 锚点类型三&#xff1a;与父节点的4边保持固定距离 Anchors锚点数值P…

目标检测:锚点介绍及应用

目标检测&#xff1a;锚点介绍及应用 介绍应用生成锚点图步骤 锚点匹配步骤 介绍 锚点相当于在待预测的特征数据上预设出可能的物体边界框&#xff0c;即预设出特征数据可能代表的物体区域&#xff0c;每个区域通常由两个属性构成——尺度&#xff08;scale或size&#xff09;和…

锚点用法

一、常见用法 1、给指定标签添加id和name&#xff1a; id或name都可以实现锚点&#xff0c;id是name的升级版&#xff0c;更有效&#xff0c;可以只用id。 2、给a标签的href绑定想要跳转到的位置的id。 二、js锚点定位 document.getElementById("divId").scrollInt…

html 锚点 中文,html怎么设置锚点

html设置锚点的方法&#xff1a;1、设置一个锚点链接“...”&#xff1b;2、在页面中需要的位置设置锚点&#xff1b;3、在href中的路径后面追加“#锚点名”即可。 本文操作环境&#xff1a;Windows7系统、HTML5版&#xff0c;DELL G3电脑 html中的锚点页面内跳转的锚点设置 页…

实现锚点跳转

实现锚点跳转要使用&#xff1a;a标签的href属性 其它某一个标签的id属性 设置某个标签的id属性a标签的href属性设置为&#xff1a;# 想要跳转位置的标签的id属性 <a href"#abc">点击跳转</a> ...... <div id"abc">将要跳转到这里&l…

使用 Vue3 实现锚点组件

目录 1. 需求介绍 2. 实现过程 2.1 表单结构介绍 2.2 确定锚点组件接收的参数及使用方法 2.2.1 form-dom&#xff1a;需要被锚点组件控制的表单实例 2.2.2 active-anchor&#xff1a;默认激活的锚点 2.2.3 title-class&#xff1a;表单标题特有的类名 2.2.4 将 锚点组件…