• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

android知识点总结

android 搞代码 3年前 (2022-03-02) 30次浏览 已收录 0个评论
文章目录[隐藏]

**我收集了一些学习用的材料,其中蕴含了很多学习,面试,中高进阶fluuter材料,还有很多视频详解,如果有同学想进一步理解,详情请看文末。也欢送各路大神门前来装X。

1,Android UI体系

1) 三层架构、MVC、MVP、MVVM

对于小我的项目能够按如下分法(mvp选用);对于大我的项目能够按模块分,而后模块内再按如下散发。

分包(按性能分):

basal:基类;

surface(fragment、activity、broadcast、listener):界面类;

adapter:适配器类;

mvp(presenter、constract、view):mvp层类;

util:通用工具类;

widget:自定义View类;

entity:实体类;

Config.class

MyApplication

2)xml(Extensible Markup Language,可扩大标记语言)

字体个别是34px、30px、28px、26px、24px、22px

小细线1px dddddd 粗线10px f5f5f5 背景色f5f5f5、app的左右间隔是20px

主题色

3)控件

①View

【Android学习】android.view.ViewStub

【android学习】EditText

【android学习】Toast(音讯弹框)

【android学习】Dialog对话框

【android学习】webView(网络视图)

【Android学习】列表(ListView、RecyclerView)和adapter

【Android学习】android.view.ViewStub

【Android学习】Android罕用框架

②标题栏

4)Window和WindowManager

5)图片

①Drawable

②Bitmap的加载和Cache

6)动画

7)Splash界面

①作用

展示产品的logo

初始化操作(创立数据库,读取配置文件)

连贯服务器查看软件受权

连贯服务器查看软件的更新

②实现

用handler提早,在SplashActivity界面中写如下代码 ,并禁用返回键。

private final int SPLASH_DISPLAY_LENGHT = 3000;

……

handler = new Handler();

// 提早SPLASH_DISPLAY_LENGHT工夫而后跳转到MainActivity

handler.postDelayed(new Runnable() {

@Override

public void run() {

Intent intent = new Intent(SplashActivity.this,

MainActivity.class);

startActivity(intent);

SplashActivity.this.finish();

}

}, SPLASH_DISPLAY_LENGHT);

2,Android根底

1)四大组件-Activity

①Fragment相干

2)四大组件-Service

3)四大组件-Content Provider

4)四大组件-BroadcastReceiver(播送接收者)

5)重要组件-intent

6)Context类和Application类

7)【Android学习】Android Studio学习

我的项目构造

gradle

jar和arr

8)Android零碎优缺点

五大有余:

①平安与隐衷

②首先开卖Android手机的不是最大运营商

③运营商依然能影响到Android手机

④同类机型用户缩小:短少对立机型的程序

⑤过分依赖开发商短少标准配置:开发依赖第三方,短少产品统一性。

长处:

①市场份额大

②应用程序倒退迅速

③智能厂家助力

④手机价廉但性能不低

⑤机型多,硬件配置优

⑥零碎开源:利于翻新,开发者多,不便开发。

9)罕用Manager

3,Android底层

1)存储形式(数据长久化)

数据长久化:将内存中的数据模型转化为存储模型。、

其余存储形式:

redis:一个开源应用ANSI C语言编写、反对网络、可基于内存亦可长久化的日志型、Key-Value数据库。

sessionStorage:生命周期为以后窗口或标签页,一旦窗口或标签页被永恒敞开了,那么所有通过sessionStorage存储的数据也就被清空了。

file, sqlite3, Preferences, ContentResolver与ContentProvider前三种数据操作形式都只是针对本利用内数据,程序不能通过这三种办法去操作别的利用内的数据。

①SQLite数据库

存储结构化数据。

②File(文件存储、I/O存储)

常用语存储大数量的数据,然而毛病是更新数据将是一件艰难的事件。

分为外部存储和内部存储(SD卡)两种存储形式。

File.mkdirs和File.mkdir的区别

File.mkdirs在多层目录底下创立文件。

File.mkdir能在二层目录只能一层创立文件,仅能在已有目录下创立. 对于门路理论不存在的,调用File.mkdirs()办法。

③SharedPreferences

实质就是一个xml文件,罕用于存储较简略的参数设置。

共享参数,键值对模式存储。

④网络存储

将数据存储到服务器上。

⑤ContentProvider存储

查看四大组件-Content Provider。

ContentProvider的目标是对外裸露数据供其余程序查问。

每个Content Provider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据须要共享时,就须要应用Content Provider为这些数据定义一个URI,而后其余的应用程序就通过Content Provider传入这个URI来对数据进行操作。

2)【Java学习】Java内存

3)【Android学习】DVM——apk生成、装置、启动、反汇编

4)【Android学习】NDK编程——JNI(Java Native Interface,java本地接口)编程

5)【Android学习】Android平安机制

6)【Android学习】Android零碎架构

4,过程和同步

1)【android 】过程、守护过程的实现及过程拉活

2)【java学习】过程、线程、程序

3)【Android学习】IPC(跨过程通信,Inter-Process Communication)

4)【Android学习】Android网络:Socket、HTTP

①socket传输中,流的敞开

②android端通过socket接管到数据产生乱码

③socket ECONNRESET 异样

④socket长连贯,造成数据粘包问题

⑤【Android学习】断线重连、长连贯心跳机制

5)【Android学习】序列化:Serializable和Parcelable

6)【Android学习】音讯机制Handler

7)【Android学习】线程的其余形式:AsyncTask、IntentService、HandlerThread、ThreadPoolExecutor

8)【java学习】多线程并发

9)【java学习】java锁

10)资源池

Android中提供了资源池的对象有:

–Message

提供了音讯池,有静态方法Obtain从音讯池中取对象。

–AsynTask

AsynTask是线程池革新的,池里 默认提供(核数+1)个线程进行并发操作,最大反对(核数 * 2 + 1)个线程,超过后会抛弃其余工作。

–ThreadPool

Thread默认不提供资源池,除非应用线程池ThreadPool治理。

对于Looper,每个Looper创立时创立一个音讯队列和线程对象,但不是资源池。

5,数据结构和算法

【数据结构】排序算法

【数据结构】查找

【数据结构】树

【数据结构】图

【数据结构】数组

【数据结构】队列和栈

【数据结构】线性表:程序表、单链表

【算法】电梯调度算法/磁盘扫描算法

6,设计模式

编程素质】多线程编程之设计模式

1.复合模式:三层架构、MVC、MVP、MVVM

2.设计模式-单例模式

配置类的应用。

3.设计模式-模板办法

通过抽象类或接口提前定义要实现的办法。

4.设计模式-观察者模式

音讯的告诉。

5.设计模式-装璜模式:处于平安目标,爱护被访问者

对一个已有的接口进行性能扩大。

如,继承父类,并减少扩大新的办法。

6.设计模式-策略模式

MVC中:

控制器是视图的策略。

视图只关怀零碎中可视的局部,对于任何界面行为,都委托给控制器解决。

控制器负责和模型交互来传递用户申请,对于工作是怎么实现的,视图毫不知情。

7.设计模式-工厂模式(Factory Pattern)、 管制反转(IoC)与依赖注入(DI)

简略工厂、工厂办法、形象工厂。创立新对象。

8.设计模式-命令模式

反对撤销。

9.设计模式-适配器模式(Adapter)

adpater的应用。

10.设计模式-外观模式

如用一个spManager治理所有的sp对象取得的数据。

11.设计模式-桥接模式

将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者能够独立地变动。

举例:汽车和公路问题。

12.设计模式-代理模式(委托模式、Proxy Pattern):动静裁减对象性能

传入对象,并调用对应的办法。如接口回调。

13.迭代器模式

Iterator。

14.组合模式(合成模式)

容许将对象组合成树形构造来体现“整体/局部”层次结构。树节点能够对子节点进行增删改查等操作。

View和ViewGroup就是一种很规范的组合模式。

15.状态模式

机器取糖果,容许对象在外部状态扭转时扭转它的行为,对象看起来如同批改了它的类。

16.生成器模式Builder Pattern

如AlertDialog.Builder。

17.责任链模式

常常被应用在窗口零碎中,解决鼠标和键盘之类的事件。

18.蝇量模式Flyweight Pattern

19.解释器模式Interpreter Pattern

20.中介者模式Mediator Pattern

21.备忘录模式MementoPattern

当你须要让对象返回之前的状态时(例如:用户申请撤销操作),就应用备忘录模式

22.原型模式Prototype Pattern

23.访问者模式Visitor Pattern

7,网络根底、操作系统根底

【网络根底】TCP/UDP

【数据结构】位运算

【网络根底】IP计算

8,数据库

9,java根底

【java学习】java根底语法

【java学习】String字符串

【java学习】类Class

【java学习】汇合框架

【java学习】JVM学习

【java学习】面向对象三大个性:封装,继承,多态

【Android学习】缓存

【java学习】修饰符

【java学习】数据类型

【java学习】装箱与拆箱、泛型

【java学习】异样

【java学习】反射机制

【java学习】java根底语法

【java学习】正则表达式(Regular Expression)

【java学习】Json框架

【Java学习】JAVA和C++区别

10,Android性能优化

1)布局优化、自定义View优化

删除布局中无用的控件和层级

有选择地使用性能较高的ViewGroup

用<include>标签、<merge>标签、ViewStub

2)activity启动优化

耗时操作优化

布局文件优化

视图加载优化。如:Fragment的懒加载,只有显示时才去加载。

3)列表优化

尽量复用convertview历史的缓存,缩小创立新的view对象。

尽量的缩小子孩子的id的查问次数,定义一个viewHolder。

4)内存优化

5)图片缓存

图片的三级缓存机制

11,项目管理

项目管理-Git应用

项目管理-SVN学习

12,利用

1)token登录

①定义

Token是服务端生成的一串字符串,以作客户端进行申请的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,当前客户端只需带上这个Token前来申请数据即可,无需再次带上用户名和明码。

②作用

Token的目标是为了验证用户登录状况以及加重服务器的压力,缩小频繁的查询数据库,使服务器更加强壮。

Token是在客户端频繁向服务端申请数据,服务端频繁的去数据库查问用户名和明码并进行比照,判断用户名和明码正确与否,这样减少了服务器累赘。

③利用

i>用户首次登录胜利之后, 服务器端就会生成一个 token 值,保留在数据库并返回给客户端.

ii>客户端拿到 token 值之后,应用sp进行保留。

iii>客户端再次发送网络申请(个别不是登录申请)的时候,就会将这个 token 值附带到参数中发送给服务器.

iv>服务器接管到客户端的申请之后,取出token值与保留在本地(数据库)中的token值做比照

如果两个 token 值雷同, 阐明用户处于登录状态。

如果没有这个 token 值, 没有登录胜利。

如果 token 值不同: 阐明原来的登录信息曾经生效,让用户从新登录。

2)登录验证

通过.requestFocus()取得焦点,进步用户体验

String Str_name = et_username.getText().toString().trim();

String Str_psw = et_password.getText().toString().trim();

if (null != Str_name && Str_name.equals(“”)) {

showCustomToast(“用户名不能为空”);

et_username.requestFocus();

} else if (null != Str_psw && Str_psw.equals(“”)) {

showCustomToast(“明码不能为空”);

et_password.requestFocus();

} else if (Str_psw.contains(“卍”)) {

showCustomToast(“明码不能含有特殊字符”);

et_password.requestFocus();

} else if (Str_psw.length() < 6) {

showCustomToast(“明码不能少于6位”);

et_password.requestFocus();

} else {

tryLogin(Str_name, Str_psw);

}

3)GPS开启

检测GPS是否开启,如果没有则跳到GPS界面供用户开启。

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

// 判断GPS是否失常启动

if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

ToastUtil.showShort(context, “未开启位置服务,请开启GPS导航”);

// 返回开启GPS导航设置界面

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivityForResult(intent, 0);

return;

}

4)其余demo

android离线日志文件打印

检测android主屏,并把app从后盾切换置前台

放弃屏幕常亮

断线重连机制

13,问题解决

1)eclipse找不到设施,adb须要重启

写一个.bat文件,内容如下:

(留神:cd /d D:\android-sdks\platform-tools 请替换为本人的adb.exe门路)

@echo off

taskkill /F /IM adb.exe

echo Kill实现…

pause

echo 重启开始…

cd /d D:\android-sdks\platform-tools

adb devices

pause. & exit

2)其它

①android中应用Menu时可能须要重写的办法有:onCreateOptionMenu()和onOptionItemSelected().

②eclipse编辑器乱码解决

configChanges详解-之解决问题:手机切换字体后,app异样解体

eclipse创立app时多出appcompat_v7

android开发误删appcompat_v7

Replace “…” with ellipsis character (…, &&;#8230;) ?

eclipse ‘Launching Hello’has encountered a problem


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:android知识点总结

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址