导航:首页 > 操作系统 > robustandroid

robustandroid

发布时间:2023-03-25 12:00:52

1. 急需!!!!!!!!!!!!!!!120个英语单词

pact n.协定,条约
panorama n.全景
pants n.长裤
paperback n.平装本
passerby n.过路人
pathetic a.怜的
patrol n.巡逻
patron n.赞助人
pedestrian n.行人
peer vi.凝视
permeate vt.弥漫,渗透
persevere v.坚持不懈
pharmacy n.药房,药剂学
physiology n.生理学
pilgrim n.朝圣客,香客
plea n.请求,恳求
plight n.(恶劣的)情势
plumber n.水管工
poke vt.戳,刺
polar a.极地的
ponder vi.考虑,沉思
portray vt.描绘,描写
poster n.海报
posture n.姿势
practitioner n.从业者(医生、律师)
precedent n.先例 a.在前的
preclude vt.预防,阻止
predecessor n.前辈,前任
pregnant a.怀孕的;意义深长的
premise n.前提vt.假定
premium n.奖金,保险费
prestige n.威望,声望
privacy n.隐私,秘密
prone a.易于……的
propaganda n.宣传
propel vt.推进,推动
prophet n.预言家
prose n.散文
prosecute vt.告发,起诉
prosper v.兴隆;昌盛
prosperity n.繁荣,兴旺
prototype n.典型,范例
prudent a.谨慎的
pub n.酒馆,客栈
quest vt.寻找vi.追求
questionnaire n.问卷
quota n.限额,定额
radiant a.发光的;容光焕发的
rap vt.轻拍;严厉指责 n.轻拍;斥责
rape vt.强奸n.强奸
rash a.轻率的;匆忙的
reassure vt.使安心
recede v.退后
recipient n.接受者,接收者
reckless a.鲁莽的;不顾危险的
rectangle n.长方形
recur vi.复发,重现
recycle vt.重复利用
rendant a.冗长的
refrain vi.抑制
refugee n.难民
refund vt.退还,偿还
relish n.风味;爱好;食欲
remnant n.残留部分a.剩余的,残留的
renaissance n.文艺复兴
repertoire n.保留剧目
repression n.镇压;抑制
restore vt.恢复,归还;修补,重建
retention n.保留,保持
retort vi.反击,反驳
retrieve vt.取回,挽回;检索
retrospect n.回顾;追溯
revelation n.揭露,泄露;显示,展示
rigorous a.严厉的;彻底的
riot n.骚乱,暴乱
rip vi.扯破,划破
ritual n.仪式a.仪式的
robust a.强健的;粗野的
salvation n.拯救
sanction n.国际制裁
sane adj.神志清楚的,明智的
sarcastic a.讽刺的
saturate vt.使饱和;使湿透
scandal n.丑闻
scramble vt.攀登;争夺
script n.手稿
scrutiny n.细看,仔细检查;监视
sculpture n.雕刻,雕塑
sector n.扇形;部门
seemingly ad.表面上
segregate a.分离的vt.使分离
selfish a.自私的,利己的
serial a.一系列的;分期刊载的n.连载小说
setback n.挫折,失败
shabby a.褴褛的,破旧的
sham vt.假装
shatter vt.粉碎,毁坏
shorthand n.速写
shove vi.推挤,猛推n.推,推开
shrug vt.&vi.耸肩
shuttle n.梭;往返的车(船,飞机)vi.穿梭往返
siege n.包围,围攻
sip vt.啜饮n.啜
skeptical a.怀疑的,多疑的
skim vi.浏览,略读vt.掠过,擦过;略读
skip vi.跳;跳绳;略过
skull n.头盖骨,脑壳
slam vt.使劲关,砰地放下
slaughter vt.屠杀,屠宰n.屠杀
slogan n.标语,口号
slot n.缝,狭槽
sneak vt.偷偷摸摸,偷窃
sneeze n.喷嚏v.打喷嚏
sniff vt.闻,嗅n.嗤之以鼻;嗅
soar vi.猛增;翱翔
sociable a.友好的,喜好交际的
sofa n.沙发
solidarity n.团结
solitary n.独居者a.孤独的
solo n.独唱,独奏;独唱曲
sovereign n.君主a.统治的
spacious a.广阔的,广大的
specialist n.专家
spectrum n.系列,范围;光谱
spicy a.香的,多香料的,辛辣的,下流的
spine n.脊骨
spiral a.螺旋(形)的,盘旋的
sponsor n.发起者vt.发起
spouse n.配偶,夫妻
sprout v.发芽;生长
stagger vi.蹒跚vt.使摇晃
stalk vt.隐伏跟踪
staple n.主要产品
statute n.法令,法规
steak n.肉排,牛排
stereotype n.陈腔滥调,老套
stiff a.硬的;拘谨的
strenuous a.费力的
strife n.冲突;斗争
stroll vi.漫步,闲逛n.散步
stun vt.使昏迷;使发愣 n.晕眩
subsidy n.补助金,津贴
suffice vi.足够;有能力
suite n.套房
summit n.顶点;最高级会议
superstition n.迷信
surge n.激增vt.激增;汹涌,澎湃
susceptible a.易受影响的;敏感的
tangle vt.使缠结,使纠缠n.纠缠;口角
temperament n.气质,性格
texture n.质地,纹理
thigh n.大腿,股
thrift n.节约,繁荣
toll n.费用
torment vt.使痛苦n.痛苦,折磨
torture n.拷问,折磨vt.拷打
toxic a.有毒的;中毒的
transcend vt.超越,胜过
trash n.废物,垃圾
tribe n.部落,宗族
trigger n.扳机vt.触发,引起
tropic n.热带
underlie vt.位于…之下
vein n.静脉,血管
visa n.签证;信用卡
vocal a.有声的
vulgar a.粗俗的,庸俗的
vulnerable a.脆弱的
wardrobe n.衣橱
weld vt.焊接n.焊接,熔接
whale n.鲸
whatsoever pron.无论什么
wink v.眨眼
witch n.巫婆,女巫vt.施巫术,迷惑
witch n.巫婆
wizard n.男巫,术士,鬼才a.男巫的,巫术的,有魔力的n.向导
youngster n.儿童,少年
zip n.拉链
zoom n.急速上升

2. 什么是java

“什么是Java?”

Java,由Sun Microsystems公司于1995年5月推出,它是一种可以编写跨平台应用软件、完全面向对象的程序设计语言。

不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

B站尚学堂Java基础教程

“什么样的人适合学Java?”

● 逻辑思维能力强

对于Java来说所有功能都是通过编写代码实现的,需要开发人员具备较强的逻辑性和运算性。

● 端正心态、踏实耐心

在平时的工作中会有一大部分时间是花费在解决bug上,在遇到问题后一遍遍的排查代码,所以拥有良好的心态也是必不可少的优势。

● 不断学习的能力

随着科技的发展会不断出现各种新型的技术,开发人员需要及时的关注这些新技术并且转化为自己技能。

3. Java的优势到底在哪里

1、语法比较简单,学过计算机编程的开发者都能快速上手。
2、在若干领域都有很强的竞争力,比如服务端编程、高性能网络程序、企业软件事务处理、分布式计算、android移动终端应用开发等等。
3、符合工程学的需求,我们知道现代软件都是协同开发,那么代码可维护性、编译时检查、较为高效的运行效率、跨平台能力、丰富的IDE、测试,项目管理工具配合,都使得 Java成为企业软件公司的首选,也得到很多互联网公司的青睐。
为什么那么多人学Java?
1、Java语言的市场需求量多。无论是手机软件、手机Java游戏还是电脑软件,你的每一次购物到每一笔支付成功,都离不开Java,越来越多的企业也正采用Java语言开发网站,而在所有程序员中,Java开发工程师就占据20%的比例。
2、Java的市场人才需求量尚未饱和。整个互联网在不断发展,Java技术也在不断进步,Java应用会越来越广泛,人才需求当然也不会止步于当前,所以不论现在还是未来,整体市场都不会饱和,只会低端饱和,高端缺人。未来优秀Java工程师将成为市场争抢的资源。
3、Java作为最长寿的语言,在将来很长一段时间内,仍将是编程语言的主流。

4. Android-类加载

双亲委托机制

类在进行类加载的时候,把加载任务托管给父类加载器,如能加载成功,则返回,否则依次向子类加载器递归尝试类加载。

意义:

①避免类的重复加载,父类加载已加载该类时,子ClassLoader就没有必要加载一次了。

②安全性,防止核心API被随意篡改。

ClassLoader

ClassLoader本身是一个抽象方法。它的主要实现类有BootClassLoader、PathClassLoader、DexClassLoader.

BootClassLoader:用于加载Android Framwork层(SDK)的class文件

PathClassLoader:用于Android应用程序加载器,可以加载指定的dex和jar、zip、apk中的classes.dex(系统使用)

DexClassLoader:用于加载指定的dex和jar、zip、apk中的classes.dex。(供开发者使用)

拓展:

在API26之前。

optimizedDirectory 参数就是dexopt的产出目录(odex)。那 PathClassLoader 创建时,这个目录为null,就

意味着不进行dexopt?并不是, optimizedDirectory 为null时的默认路径为:/data/dalvik-cache。

在API26之后DexClassLoader也取消了optimizedDirectory

热修复相关

LoadClass:

findClass:PathClassLoader和DexClassLoader的父类BaseDexClassLoader中实现findClass。

BaseDexClassLoader中

PathClassLoader加载过后,pathlist 中存在一个Element数组,Element类中存在一个dexFile成员表示dex文件,即:APK中有X个dex,则Element数组就扮丛有X个元素。

总结:

可能看到这里我们比较乱了,理一下。一个类的加载经历了哪些。我们以PathClassLoader为例。

①加载一个类的时候,首先通过Class缓存寻找是否已经加载过该类。参考抽象类的loadClass方法。

②若在缓存中未找到该类,则交由父加载器加载该类。参考抽象类的loadClass方法。

③调用父加载器PathClassLoader的父类BaseDexClassLoader实现的findClass方法加载该类。

④PathClassLoader在初始化的时候调用枣坦父构造方法实例化DexPathList属性,DexPathList属性初始化时构造方法内通过makePathElements(或makeDexElements 不同API可能不同)加载APK内的dex文件生成Element数组。

⑤BaseDexClassLoader实现的findClass方法中顺序循环已存在的Element数组,通过Element中的DexFile加载类。。

⑥未找到,抛出类未找厅岩樱到异常。

热修复(multide 形式(thinker、qfix))

热修复的原理。我们只需在应用启动的时候,一般是在application方法中(因为class加载首先从缓存中加载),在应用启动后,经过PathClassLoader加载过后所有的类都在 pathList的Element 数组,把生成的Elment数组插入到PathList的Element数组的最前方。在加载类的时候就只会加载到我们需要更新的类了,因为是顺序寻找,找到就返回。(先从我们补丁的dex文件生成的element寻找,找不到再从APK的dex生成的element种寻找)。

热修复基本思路总结:

①获取到当前引用的PathClassLoader

②反射获取其中DexPathList属性:DexPathList pathList.

③获取到补丁包path.dex文件的Element[]数组 pElements。参考PathClassLoader怎么把dex文件转换为Element数组的。于是我们反射执行DexPathList 中的makePathElements方法(视API而定)传入dex路径得到补丁包的element数组。

④获取pathList的dexElements数组。

⑤把补丁包的pElements数组合并到pathList的dexElements数组的前方,即newElements=pElements+dexElements

⑥反射赋值把newElements替换掉pathList的dexElements

热修复没这么简单,还需考虑混淆,API版本不同导致的使用makePathElements方法或makeDexElements方法等因素。

热修复(InstantRun 形式(Robust))待了解。

5. 安卓第三方开源库

https://github.com/Snailclimb/JavaGuide
https://github.com/crossoverJie/JCSprout
https://github.com/yangchong211/YCBlogs
https://github.com/GcsSloop/AndroidNote

Android开源库V - Layout:淘宝、天猫都在用的UI框架,赶紧用起来吧!
安卓开发者不得不收藏的工具
安卓那些你不得不收藏的开源库
GitHub上受欢迎的Android UI Library
Android开源项目以及开源框架,各种UI实现效果

Github: https://github.com/fanhua1994/XBaseAndroid
Gituhb: https://github.com/white-cat/ThinkAndroid
Github: https://github.com/gdpancheng/LoonAndroid

http://www.52im.net/

http://blog.csdn.net/dong_18383219470/article/details/71101859
http://blog.csdn.net/dong_18383219470/article/details/77932822

https://github.com/robbiehanson/XMPPFramework Ios
http://www.igniterealtime.org/projects/smack/ Android
http://www.igniterealtime.org/projects/openfire/index.jsp Server
http://www.igniterealtime.org/projects/spark/index.jsp Client

开源中国官方安卓APP
https://gitee.com/oschina/android-app
安卓聊天APP
Gitee: https://gitee.com/735859399/weichat

Github: https://github.com/JackJiang2011/MobileIMSDK

tinker 补丁管理管理平台
https://github.com//tinker-manager
https://www.jianshu.com/p/e61a4d10e122

https://github.com/alibaba/AndFix 阿里系
ttps://github.com/dodola/HotFix 腾讯系
https://github.com/jasonross/Nuwa
https://github.com/bunnyblue/DroidFix
https://github.com/Tencent/tinker 微信
https://github.com/dodola/AnoleFix 仿美团
https://github.com/dodola/RocooFix
https://www.aliyun.com/proct/hotfix
https://github.com/Meituan-Dianping/Robust 美团系
https://github.com/meili/Aceso 蘑菇街
https://github.com/eleme/Amigo/ 饿了么

https://github.com/square/okhttp
Github: https://github.com/jeasonlzy/okhttp-OkGo 5.9K

github: https://github.com/siwangqishiq/ImageEditor-Android

github: https://github.com/Blizzard-liu/AndroidUtils

github: https://github.com/xiuweikang/IM

github: https://github.com/LaiFeng-Android/SopCastComponent

github: https://github.com/zhoubowen-sky/LingDong

github: https://github.com/cxmscb/android-MaterialEditText

GitHub: https://github.com/dmytrodanylyk/circular-progress-button

GitHub: https://github.com/johnkil/Android-AppMsg

GitHub: https://github.com/MrZhousf/EasyDB

GitHub: https://github.com/LineChen/FlickerProgressBar

GitHub:[ https://github.com/chrisbanes/Android-PullToRefresh 暂停维护]
Github: https://github.com/huxq17/XRefreshView
Github: https://github.com/scwang90/SmartRefreshLayout
Github: https://github.com/MarkMjw/PullToRefresh
Github: https://github.com/Yalantis/Phoenix
Github: https://github.com/liaohuqiu/android-cube-app

Github: https://github.com/lizhangqu/Camera

Github: https://github.com/mayubao/KuaiChuan

Github: https://github.com/greenrobot/EventBus

Github: https://github.com/stfalcon-studio/ChatKit
Github: https://github.com/Rance935/ChatUI

Github: https://github.com/qstumn/BadgeView

Github: https://github.com/bingoogolapple/BGAQRCode-Android
Github: https://github.com/dm77/barcodescanner

Github: https://github.com/googlesamples/easypermissions
Github: https://github.com/yanzhenjie/AndPermission

Github: https://github.com/nanchen2251/CompressHelper
Github: https://github.com/jeanboydev/Android-BitherCompress
Github: https://github.com/Curzibn/Luban (最接近朋友圈图片压缩算法
Github: https://github.com/Sunzxyong/Tiny (an image compression framework.)

Github: https://github.com/FinalTeam/RxGalleryFinal
Github: https://github.com/ValuesFeng/AndroidPicturePicker
Github: https://github.com/LuckSiege/PictureSelector

Github: https://github.com/crazycodeboy/TakePhoto

Github: https://github.com/jeasonlzy/NineGridView

Github: https://github.com/donglua/PhotoPicker
Github: https://github.com/jeasonlzy/ImagePicker (已停止维护)
Github: https://github.com/LuckSiege/PictureSelector
Github: https://github.com/FinalTeam/RxGalleryFinal

Gituhb: https://github.com/DroidNinja/Android-FilePicker

Github: https://github.com/HomHomLin/AdvancedPagerSlidingTabStrip

Github: https://github.com/yangfuhai/ASimpleCache

Gituhb: https://github.com/ikew0ng/SwipeBackLayout
Github: https://github.com/liuguangqiang/SwipeBack
[图片上传失败...(image-487509-1510123239039)]
[图片上传失败...(image-f75761-1510123239039)]

Github: https://github.com/Tamicer/JsWebView

Github: https://github.com/forezp/SpringCloudLearning

Gituhb: https://github.com/daimajia/NumberProgressBar

Github: https://github.com/LinHuanTanLy/Pay_Master

Gituhb: https://github.com/chrisbanes/PhotoView

Github: https://github.com/orhanobut/dialogplus
Gituhb: https://github.com/saiwu-bigkoo/Android-AlertView
Github: https://github.com/afollestad/material-dialogs
Github: https://github.com/pedant/sweet-alert-dialog

Github: https://github.com/JoanZapata/android-pdfview

Gituhb: https://github.com/hongyangAndroid/Highlight

Gituhb: https://github.com/xiaoyaoyou1212/BluetoothChat

Github: https://github.com/LillteZheng/ViewPagerHelper

Github: https://github.com/crazyandcoder/citypicker

Github: https://github.com/QMUI/QMUI_Android

MVP+RxJava2+Retrofit2+Glide+Rxbus,主要实现日报、新闻、干货、影视等资讯,个人项目
Github: https://github.com/Horrarndoo/YiZhi
Github: https://github.com/yangchong211/LifeHelper

A memory leak detection library for Android and Java.(用于Android和Java的内存泄漏检测库)
Github: https://github.com/square/leakcanary

Github: https://github.com/zerochl/FFMPEG-AAC-264-Android-32-64

Github: https://github.com/aesion/NodeProgressView

https://github.com/CarGuo/GSYVideoPlayer

Github: https://github.com/gjiazhe/WaveSideBar

Github: https://github.com/fanhua1994/WheelPicker

Gituhb: https://github.com/XXApple/AndroidLibs

Github: https://github.com/AigeStudio/WheelPicker

Github: https://github.com/scwang90/SmartRefreshLayout (最强)
Github : https://github.com/RawnHwang/SmartRefreshLayout
Github: https://github.com/anzewei/NestRefreshLayout

Github: https://github.com/lipangit/JiaoZiVideoPlayer

Github: https://github.com/ACRA/acra

Github: https://github.com/CarGuo/CustomActionWebView

Github: https://github.com/fanhua1994/FastVideoPlayer

轻松将相机功能集成到您的Android应用程序
Github: https://github.com/google/cameraview

Github: https://github.com/hongyangAndroid/AndroidAutoLayout
Github: https://github.com/JessYanCoding/AndroidAutoSize (今日头条)

视频录制 视频压缩
Github: https://github.com/zerochl/FFMPEG-AAC-264-Android-32-64
Github: https://github.com/WritingMinds/ffmpeg-android-java
Github : https://github.com/chenhui28/VideoRecorderAndCompressor

Weixin: https://mp.weixin.qq.com/s/7ffZB0_RB90i5c60bEYRWg

Github: https://github.com/bm-x/PhotoView

Github: https://github.com/chrisbanes/PhotoView

Github: https://github.com/jpush/aurora-imui

Github: https://github.com/MZCretin/WifiTransfer-master

Github: https://github.com/DuanJiaNing/Musicoco

Github: https://github.com/GitLqr/LQRWeChat

Github: https://github.com/hmkcode/Android

Github: https://github.com/TheFinestArtist/FinestWebView-Android
github: https://github.com/delight-im/Android-AdvancedWebView

一款新闻客户端, MVP + RxJava + Retrofit + Dagger2
Github: https://github.com/Will-Ls/WeiYue

Github: https://github.com/yaowen369/DownloadHelper

Github: https://github.com/SOFTPOWER1991/OpenCVCheck

Github: https://github.com/luozhanming/Captcha

Github: https://github.com/JesseFarebro/Android-Mqtt

Github: https://github.com/wenmingvs/AndroidProcess
Github: https://github.com/jaredrummler/AndroidProcesses

Github: https://github.com/daimajia/AndroidSwipeLayout

Github: https://github.com/norbsoft/android-typeface-helper

Github: https://github.com/zcweng/ToggleButton

Github: https://github.com/wangzailfm/WanAndroidClient (Kotlin)
Github: https://github.com/salecoding/WanAndroid (Java)

Github: https://github.com/zrunker/IbookerEditorAndroid/

Github: https://github.com/jfeinstein10/SlidingMenu
Github: https://github.com/SpecialCyCi/AndroidResideMenu

Github: https://github.com/totond/TextPathView

Github: https://github.com/DroidPluginTeam/DroidPlugin [360手机助手]
Github:[

6. Starst:Android插件补丁于一体的解决方案

这篇文章分享了笔者近几个月在插件和热补丁技术方面的一些经验积累以及我们开发的动态加载框架Starst.

针对Android平台,集热更新热修复于一体的解决方案,一套机制解决两个问题

它主要包括三个部分:

Qihoo360/DroidPlugin
CtripMobile/DynamicAPK
mmin18/AndroidDynamicLoader
singwhatiwanna/dynamic-load-apk
houkx/android-pluginmgr
bunnyblue/ACDD
wequick/Small
主要分为两类:

主流插件框架对比

总体来说:
1.沙盒的方案是最极致 也是开发成本最高的,但对兼容性和稳定性提出了很高的要求
2.Small修改资源packageId方案的思路值得借鉴,但不本身不适于产品化,比如首次启动插件的性能问题以及一些兼容性的问题

Java流派:
1)更改classloader加载dex顺序,同时绕过pre-verified:qq空间,nuwa, qfix, robust
2)dex合成:tinkerNative流派: AndFix

| 方案 | Tinker | QZone |AndFix|
| -------- | --------| -- |
| 原理 | 反射classloader+ dexdiff 全量合成 | hack classloader + 插桩 | native hook |
| 缺陷 | 合成逻辑复杂,感觉较重 | 运行时性能受到插桩机制的影响 略差 | 兼容性稳定性较差 |

更详细的比较可以参考Tinker( https://github.com/Tencent/tinker/wiki )

这张图中我们需要了解以下几点:

Starst的开发之路并不是顺利的,最初时并没有想的十分清楚, 对于四大组件的支持到什么样的程度?
是否真的有必要支持四大组件的动态更新?
对于热补丁采用哪种机制,Tinker/Qzone/AndFix/QFix? ,
这些问题当时都很难回答,也是在开发中不断探索,不断汲取别人的经验,过程中我们借鉴了 Small 以及 QFix 设计上的很多思路,对此表示感谢,日后我们也会在Starst更完善的时候将它开源,与大家共同学习成长。

目前整套机制还在产品的灰度测试中,已覆盖2000+用户

最开始的开发中我们已经开发了对四大组件动态加载的原型,在其后的开发中我们也在不断思考动态化加载方案的优势

而引入hook 四大组件加载的机制对于稳定性、兼容性也提出了更高的要求,以及对于插件的进程管理也需要统一的维护管理,反而不如注册在宿主的AndroidManifest.xml中交由交由系统管理,各自的生命周期,对此仅需要规范的开发流程即可保证。

以上是笔者在插件和补丁的技术研究中的一些收获,目的是为了提供一个新的思路,关于具体的实现技术细节并没有做展开的阐述,感兴趣的同学可以参考提供链接

插件的演化介绍
QFix热补丁机制 Small
Tinker

7. Android lint 代码优化

1.string concatenation in loop
这个老生常谈,一个"+"号就会new 一个StringBuilder实例,但是平时code时总会发现亮伏项目里有人一个for()循环里开始用“+”去拼接字符串。。。”
用StringBuilder.append()代替;

2.new Integer ()to String can be simplified to Integer.toString
stackoverflow上解陪告释了关于两个的区别和什么时候用哪个写的很详细,高赞截图如下:

3.suspicious list.remove in the loop
Reports when list.remove(index) is called inside the ascending counted loop. This is suspicious as list becomes shorter after that and the element next to removed will not be processed. Simple fix is to decrease the index variable after removal, but probably removing via iterator or using removeIf method (since Java 8) is a more robust alternative. If you don't expect that remove will be called more than once in a loop, consider adding a break command after it.
list.remove()删除完后,内部数据会补上空缺,从而导致index下获取的值不再是原来的值
建议由

优化为如下:

然后具体解释如下:

Android 方面
当Android应用启动的时候,系统会自动创建一个供主线程使用的Looper实例。

Looper的主要工作就是一个一个处理消息队列(MessageQueue, Looper构造方法中创建)中的消息对象。在Android中,所有芦键明Android框架的事件(比如Activity的生命周期方法调用和按钮点击等)都是放入到消息中,然后加入到Looper要处理的消息队列中,由Looper负责一条一条地进行处理。

我们在主线程中实例化一个Handler时,如果没有指定其它的Looper,那么它就会自动使用主线程的Looper,如下图所示log:

所以我们发送一条消息到此Handler时,实际上消息是进入了主线程的消息处理队列,而此消息已经包含了一个Handler实例的引用:

当Looper来处理消息时,会据此引用来回调[Handler#handleMessage(Message)]:

Java中的 非静态内部类 以及 匿名内部类 会持有外部类的引用。 静态内部类 不会持有外部类的引用。

结合Android和Java方面的分析,我们应该很容易就知道了为什么会产生内存泄漏:

8. 蓝牙技术是如何实现的需要什么语言去编程

什么是蓝牙?

蓝牙(Bluetooth)是由东芝、爱立信、IBM、Intel和诺基亚于1998年5月共同提出的近距离无线数据通讯技术标准。它能够在10米的半径范围内实现单点对多点的无线数据和声音传输,其数据传输带宽可达1Mbps。通讯介质为频率在2.402GHz到2.480GHz之间的电磁波。

蓝牙通讯技术的特点

■蓝牙工作在全球开放的2.4GHz ISM(即工业、科学、医学)频段;
■使用跳频频谱扩展技术,把频带分成若干个跳频信道(hop channel),在一次连接中,无线电收发器按一定的码序列不断地从一个信道“跳”到另一个信道;
■一台蓝牙设备可同时与其它七台蓝牙设备建立连接;
■数据传输速率可达1Mbit/s;
■低功耗、通讯安全性好;
■在有效范围内可越过障碍物进行连接,没有特别的通讯视角和方向要求;
■支持语音传输;
■组网简单方便

蓝牙通讯技术的用途

蓝牙技术是一种新兴的技术,尚未投入广泛应用,目前许多蓝牙设备还处于实验室试验阶段。但可以肯定的是现在多数具有红外无线数据通讯功能的设备,在将来一样可以使用蓝牙技术来实现无线连接。同时蓝牙技术的网络特点和语音传输技术使它还可以实现红外技术无法实现的某些特定功能,如无线电话、多台设备组网等等。

厂家和消费者的认同度

蓝牙技术已获得了两千余家企业的响应,从而拥有了巨大的开发和生产能力。蓝牙已拥有了很高的知名度,广大消费者对这一技术很有兴趣。

植入成本

目前市面上的蓝牙设备还是比较少见。USB接口蓝牙适配器、蓝牙PC卡和蓝牙手机已经有了面向市场的产品,售价都很高。由此可见蓝牙早期发展阶段植入成本还是比较高的。但估计批量化后植入成本可在30美元以下。在蓝牙技术发展成熟的时期,植入成本应该可以控制在10美元以内。

缺点

蓝牙是一种还没有完全成熟的技术,尽管被描述得前景诱人,但还有待于实际使用的严格检验。蓝牙的通讯速率也不是很高,在当今这个数据爆炸的时代,可能也会对它的发展有所影响。

目前主流的软件和硬件平台均不提供对蓝牙的支持,这使得蓝牙的应用成本升高,普及难度增大。

ISM频段是一个开放频段,可能会受到诸如微波炉、无绳电话、科研仪器、工业或医疗设备的干扰。
红外

JAVA介绍

一、前言

‘Java’从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和多 媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机(PC)的关系。那Java究竟有那些特色呢?

Java是一种软件技术
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
是一种为 Internet发展的计算机语言
是一种使网页(Web Page)产生生动活泼画面的语言
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
是一种语言,用以产生“小应用程序(Applet(s))”
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
是一种将安全性(Security)列为第一优先考虑的语言
是一种使用者不需花费很多时间学习的语言
是一种突破用户端机器环境和CPU结构的语言
是一种“写一次,即可在任何机器上执行(Write OnceRun Anywhere)”的语言是有史以来,第一套允 使用者将应用程序(Applications)通过Internet从远端的服务器(Remote Server)传输到本地端的机器 上(LocalMachine)并执行
是一种应用程序提供者不需要知道使用者的计算机硬件(如:Sun, Intel, 或MAC等)与软件(如:SW- UNIX, MAC O/S, Windows, 或NT等)环境的语言(Kestenbaum, 1995)。

下面将依序地介绍Java,首先是Java的发展历史与Java语言介绍,其次依序是Java Applet和HotJava的简单介绍。

二、Java FAQ

下面以问答的方式来说明Java的发展历史与其背景(下列内容整理自 Java FAQ list and Tutorial和The Java Language: A White Paper,读者若欲深 入了解,请自行参阅原文):

Java何时开始发展?(When)
最早大概可追溯至1991年四月份,Sun的绿色计划(Green Project)开始着手于发展消费性电子产品(Consumer Electronics),所使用的语言是C、C++、及Oak (为Java语 言的前身),后因语言本身和市场的问题, 使得消费性电子产品的发展无法达到当初 预期的目标,再加上网络的兴起, 绿色计划也因此而改变发展的方向,这已是1994 年了。

为何称之为Java?(Why) "Java"是美国SUN计算机公司Java发展小组历经无数次的激烈讨论之后才被选择出。 生动(Liveliness)、动画(Animation)、速度(Speed)、交互性(Interactivity)为当 初选择名字时所欲表达出的特色。"Java"是在无数的建议中脱颖而出的,而"Java" 不是由几个单字的首字所组成, 而是从许多程序设计师钟爱的热腾腾、香浓咖啡中 产生灵感的。

谁开发了Java?(Who) Java是美国SUN计算机公司Java发展小组开发的,早期的成员(绿色工程)是Patrick Naughton, James Gosling, & Mike Sheridan,而现在大家较为熟悉的成员是James Gosling。

在那里开发了Java?(Where)
也就是问Java的出生地?答案是美国。

如何可以找到所需的Java信息?(How to)
在网路上,您可以连到Sun公司的Java WWW网站,URL是,或是 。在那里几乎可以找到您所需要的所有Java信息,但是语 言多少是一个障碍, 至少对某些人而言;没关系,目前国内已有很多个网站提供中文 Java信息。在清华和中科院的FTP站点上有不少有关资料。想象以后应会有更多的站点提供相关信息。

如何才能看到Java的效果?(How Do I)
首先您需要有含有Java解释器的浏览器(Browser),例如:Netscpae公司的Netscape Navigator 2.0以上或是Sun公司的HotJava浏览器,对个人计算机使用者而言,操作 系统需是Windows 95或是Windows NT。

Java是因为撰写C++语言程序时的困难而研制开的,起先,只是一个消费性电子产品 大计划中的一部份,C++语言是当初被考虑采用的,但从一开始的编译问题一直到最 后的一连串问题迫使得放弃C++语言,而有Java语言的产生。Sun是要Java成为一个简 单(Simple)、面向对象的(Object Oriented)、 分布式的(Distributed)、解释的(Interpreted)、健壮的(Robust)、安全的(Secure)、 结构中立的(Architecture Neutral)、可移植的(Portable)、高效能的(High Performance)、多线程的(Multithreaded)、动态的(Dynamic)的程序语言(摘译自 TheJava Language: A White Paper, 1995)。

在Sun的Java语言白皮书中明白地说明上述Java语言的技巧。若以木工为比喻,一个面 向对象的木工,他(她)最主要的重点是即将要做的木椅子,其次才是所需要的工具; 反之;一个以非面向对象的木工,他(她)所关心的只是工具。最近的即插即用(Plug and Play)亦是面向对象设计的重点。 分布式的(Distributed):Java有一个很周全的程薪录JAVA介绍 。

一、

‘Java’从1995年的暑假开始在计算机业界就受到了高度注意,特别是在Internet和 多媒体(Multimedia)相关产品类方面。Java为何有如此这么大的魅力?人作如此的比喻: Java在全球资讯网(World Wide Web, WWW)地位就如同电子表格(Spreadsheet)与个人计 算机TTP和FTP等TCP/IP通讯协定相配合。Java应用程序(Applications) 能在网路上开启及连结使用物件,就如同透过URLs连结使用一个本地文件系统(Local File System)。 健壮的(Robust):由Java所编写出的程序能在多种情况下执行而具有其稳定性。Java与 C/C++最大不同点是Java有一个指针模型(Pointer Model)来排除内存被覆盖(Overwriting Memory)和毁损数据(Corrupting Data)的可能性。

安全的(Secure):Java是被设计用于网络及分布式的环境中,安全性自必是一个很 重要的考虑。Java拥有数个阶层的互锁(Interlocking)保护措施,能有效地防止病 毒的侵入和破坏行为的发生。

结构中立的(Architecture Neutral):一般而言,网络是由很多不同机型的机器所 组合而成的,CPU和作业系统体系结构均有所不同;因此,如何使一个应用程序可以 在每一种机器上执行,是一个难题。所幸,Java的编译器产生一种结构中立的目标 文件格式(Object File Format);这使得编译码得以在很多种处理器中执行。

可移植的(Portable):原始资料型式的大小是被指定的,例如"float"一直是表示一 个32位元IEEE 754浮点运算数字,因绝大多数的CPU都具有此共同特征。程序库属于 系统的一部份,它定义了一些可移植的程序接口,Java本身具备有很好的可移植性。

解释的(Interpreted):Java解释器能直接地在任何机器上执行Java位元码(Bytecodes), 因此在进行程序连结时,时间的节省,这对于缩短程序的开发过程,有极大的帮助。

高效能的(High Performance):Java位元码迅速地能被转换成机器码(Machine Code), 从位元码转换到机器码的效能几乎与C与C++没有分别。

多线程的(Multi threaded):Java语言具有多线程的功能,这对于交互回应能力及 即时执行行为是有帮助的。

动态的(Dynamic):Java比C或C++语言更具有动态性,更能适应时刻在变的环境, Java不会因程序库的更新,而必须重新编译程序。

此外,Hank Shiffman (Making Sense of Java)亦针一般对Java的错误看法及观 念提出他的说明,特在此摘译如下:

"Java是一种编写Web Pages的一种语言,就如同HTML和VRML一样" 事实上,Java并不像是HTML此一类的描述语言(Description Language),而是一种 编程语言(Programming Language)。描述语言标明内容和位置,而编程语言描述一 种产生结果的过程。

2. "Java语言容易学习和使用,不像C、C++和其它程序语言"

Java是一种编程语言。Java容易学吗?Java或许是比C或C++容易学,但仍是一种编程语言,而不是一种描述语言。

3. "Java码是可移植的,但C及C++不是"

Java原代码(Source Code)是比C语言来得可移植一点,差别在于Java的目标码。 Java码在一种机器上进行编译,而能在所有的机器上执行, 只要那部机器上有 Java解释器。

4. "Java能被拓展而在机器上执行任何事情"

理论上,Java Applet (Java小应用程序)能做任何事情,如模拟3D VRML模型、播放电影、产生音频....等。但事实上,一个小应用程序(Applet)仅能在那一页上被执行,而无法在那一页之外执行。同时,Java亦受限于程序库的功能。

5. "Java是适合于建立大型的应用程序"

如果Java适合于大型程序,则Java就不适合应用于Web浏览器了。第一个商业 性的Java Applets (Applix's Java-Based Spreadsheet) 并不是全然使用Java, 它只使用Java作为用户接口,而所有的处理工作, 是用CGI码。

6. "Java是解释执行的,Basic是解释执行的,因此Java=Basic"

虽然Java的确是使用解释器,但事实上,Java则与C或C++等完全编译语言较为相近,但与Basic或APL等完全解译语言较不相近。

7. "Java删除了CGI命令稿(Scripts)和程序的需求"

Java Applets将会取代部份CGI的用途。在有些情况,Java Applets能够取代一些服务器端代码(Server-Side Code),但大多数的情况,基于安全性理由或是效 能的考虑,Java仍无法全然取代CGI Scripts。

8. "Netscape's JavaScript是与Java有相关"

除了名称之外,Java和JavaScript是有一点点相关。JavaScript是一种命令稿语 言,是可以在HTML页中使用。Java码并未出现在HTML中,而在HTML中通过一个链 结来链结编译码组。Java和JavaScript之间的关系就如同C语言和C Shell一般。

9. android 不混淆代码要怎么使用Robust

什么是代码混淆:
    Android SDK 自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。如果开启了混淆,Proguard默认情况下会对所有代码,包括第三方包都进行混淆,可是有些代码或者第三方包是不能混淆的,这就需要我们手动编写混淆规则来保持不能被混淆悔高的部分。

为什么要混淆:
优化java的字节码
减小纯槐apk文件的大小,在混淆过程中会删除未使用过的类和成员
代码安全,使类、函数、变量名随机变成无意义的碧裤尺代号形如:a,b,c...之类。防止app被反编译之后能够很容易的看懂代码

阅读全文

与robustandroid相关的资料

热点内容
python闹钟怎么打 浏览:686
虚拟主机服务器有什么区别 浏览:831
算法与程序的奥秘章节检测 浏览:377
找pdf 浏览:527
与服务器连接断开如何处理 浏览:831
服务器维修预计十分钟什么意思 浏览:168
黑马程序员主打教学是什么 浏览:39
python九乘法表怎么编写 浏览:972
思维方式pdf 浏览:654
tcc社区app怎么注册 浏览:937
央视网下载加密 浏览:452
命令行访问服务器 浏览:36
梁加密区箍筋是不是必须封闭箍筋 浏览:760
在百度地图如何定位服务器地址 浏览:570
单片机计数器中断 浏览:296
哈啰安装文件夹名称 浏览:294
解压视频声控用杯子玩泡沫 浏览:740
19年的普通安卓机怎么样了 浏览:604
如何在app上刷导游题目 浏览:861
子弹解压视频大全 浏览:323