導航:首頁 > 操作系統 > 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相關的資料

熱點內容
cocos2dluapdf 瀏覽:491
假的加密鎖靠譜嗎 瀏覽:176
經營聖手伺服器怎麼調 瀏覽:749
arduino手機編程 瀏覽:481
西醫pdf下載 瀏覽:29
後浪電影學院pdf 瀏覽:813
程序員怎麼做到不被人嫉妒 瀏覽:669
cmd新建文件夾md命令 瀏覽:570
php數組中的數值排序 瀏覽:832
安卓手機怎麼避免小孩內購 瀏覽:171
聯想伺服器出現黃色嘆號怎麼辦 瀏覽:991
約翰編譯器製作教程 瀏覽:130
大地pdf 瀏覽:109
pdfplus 瀏覽:577
匯編O命令 瀏覽:970
plt轉pdf 瀏覽:365
魔獸60宏命令大全 瀏覽:479
php志願者網站源碼 瀏覽:875
貿易pdf 瀏覽:497
dbug命令 瀏覽:352