久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

android總結,android方法大全

Android總結之Activity

GUI,界面,與用戶交互的可視接口。

站在用戶的角度思考問題,與客戶深入溝通,找到涿州網(wǎng)站設計與涿州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務覆蓋涿州地區(qū)。

當然Fragment,View也是,不過我把它看作是控件,Activity是開發(fā)中最基本的容器(窗口)。

目的是便于管理Activity生命周期。

新啟動的Activity會壓入棧頂,而處于棧頂?shù)腁ctivty處于Active活躍狀態(tài),即可以和用戶做交互(可見可交互)。壓在下面的Activity則處于可見不可交互,或不可見不可交互狀態(tài),并且系統(tǒng)可能會因為內(nèi)存不足原因優(yōu)先回收掉任務棧最下面的Activity,所以也有被回收狀態(tài)。

1.資源相關的系統(tǒng)配置發(fā)生改變導致Activty被殺死并重新創(chuàng)建

2.資源內(nèi)存不足導致低優(yōu)先級的Activity被殺死

擴展:進程優(yōu)先級

當Activity異常被回收的情況下,系統(tǒng)會調(diào)用onSaveIntanceState(Bundle),重新啟動時會調(diào)用onRestoreInstanceState(Bundle),所以可以在Bundle做一些數(shù)據(jù)保存和恢復的工作。

數(shù)據(jù)恢復:onCreate()與onRestoreInstanceState()區(qū)別:

onCreate()需要判空,onRestoreInstanceState不需要。

啟動模式簡單來說就是定義Activity實例與Activity任務棧的關聯(lián)方式。

目的:

設置方式:

有哪些啟動模式?

TaskAffinity(任務相關性),這個參數(shù)標識了一個Activity所需要的任務棧的名字,默認情況下,所有Activity所需的任務棧的名字為應用的名字。所有我們可以通過設置TaskAffinity為每個Activity單獨指定任務棧。

啟動Activity就兩種,顯示調(diào)用和隱式調(diào)用。

即在Intent中,顯示傳入要跳轉的組件類名。這種方式比較簡單直接,但也造成了關聯(lián)耦合。

這樣調(diào)用方式的好處是我不必知道我的目標組件具體的名字,只要有組件滿足我設置的過濾條件即可找到我想要的組件。這種方式廣泛應用在模塊化開發(fā),解決了模塊之間的跳轉問題。

隱式調(diào)用需要Intent能夠匹配目標組件的IntentFilter中設置的過濾信息,如果不匹配將無法啟動目標組件。IntentFilter中的過濾信息包括action、category、data

清單文件中,如果data僅指定了mimeType,沒有指定URI,則data中URI的scheme的默認值為file和content,所以Intent中URI的scheme也必須為file或content才能匹配到。

類似URI的結構,就是匹配URI的。

URI結果: scheme://host:port/[path|pathPrefix|pathPattern]

使用PackageManager的兩種方法判空。

第二個flag參數(shù)使用MATCH_DEFAULT_ONLY時,表示僅僅匹配那些在intent-filter中聲明了android.intent.category.DEFAULT這個category的組件。

Android性能優(yōu)化總結

常用的Android性能優(yōu)化方法:

一、布局優(yōu)化:

1)盡量減少布局文件的層級。

層級少了,繪制的工作量也就少了,性能自然提高。

2)布局重用 include標簽

3)按需加載:使用ViewStub,它繼承自View,一種輕量級控件,本身不參與任何的布局和繪制過程。他的layout參數(shù)里添加一個替換的布局文件,當它通過setVisibility或者inflate方法加載后,它就會被內(nèi)部布局替換掉。

二、繪制優(yōu)化:

基于onDraw會被調(diào)用多次,該方法內(nèi)要避免兩類操作:

1)創(chuàng)建新的局部對象,導致大量垃圾對象的產(chǎn)生,從而導致頻繁的gc,降低程序的執(zhí)行效率。

2)不要做耗時操作,搶CPU時間片,造成繪制很卡不流暢。

三、內(nèi)存泄漏優(yōu)化:

1)靜態(tài)變量導致內(nèi)存泄漏 ? 比較明顯

2)單例模式導致的內(nèi)存泄漏?單例無法被垃圾回收,它持有的任何對象的引用都會導致該對象不會被gc。

3)屬性動畫導致內(nèi)存泄漏 ?無限循環(huán)動畫,在activity中播放,但是onDestroy時沒有停止的話,動畫會一直播放下去,view被動畫持有,activity又被view持有,導致activity無法被回收。

四、響應速度優(yōu)化:

1)避免在主線程做耗時操作 包括四大組件,因為四大組件都是運行在主線程的。

2)把一些創(chuàng)建大量對象等的初始化工作放在頁面回到前臺之后,而不應該放到創(chuàng)建的時候。

五、ListView的優(yōu)化:

1)使用convertView,走listView子View回收的一套:RecycleBin 機制

主要是維護了兩個數(shù)組,一個是mActiveViews,當前可見的view,一個是mScrapViews,當前不可見的view。當觸摸ListView并向上滑動時,ListView上部的一些OnScreen的View位置上移,并移除了ListView的屏幕范圍,此時這些OnScreen的View就變得不可見了,不可見的View叫做OffScreen的View,即這些View已經(jīng)不在屏幕可見范圍內(nèi)了,也可以叫做ScrapView,Scrap表示廢棄的意思,ScrapView的意思是這些OffScreen的View不再處于可以交互的Active狀態(tài)了。ListView會把那些ScrapView(即OffScreen的View)刪除,這樣就不用繪制這些本來就不可見的View了,同時,ListView會把這些刪除的ScrapView放入到RecycleBin中存起來,就像把暫時無用的資源放到回收站一樣。

當ListView的底部需要顯示新的View的時候,會從RecycleBin中取出一個ScrapView,將其作為convertView參數(shù)傳遞給Adapter的getView方法,從而達到View復用的目的,這樣就不必在Adapter的getView方法中執(zhí)行LayoutInflater.inflate()方法了。

RecycleBin中有兩個重要的View數(shù)組,分別是mActiveViews和mScrapViews。這兩個數(shù)組中所存儲的View都是用來復用的,只不過mActiveViews中存儲的是OnScreen的View,這些View很有可能被直接復用;而mScrapViews中存儲的是OffScreen的View,這些View主要是用來間接復用的。

2)使用ViewHolder避免重復地findViewById

3)快速滑動不適合做大量異步任務,結合滑動監(jiān)聽,等滑動結束之后加載當前顯示在屏幕范圍的內(nèi)容。

4)getView中避免做耗時操作,主要針對圖片:ImageLoader來處理(原理:三級緩存)

5)對于一個列表,如果刷新數(shù)據(jù)只是某一個item的數(shù)據(jù),可以使用局部刷新,在列表數(shù)據(jù)量比較大的情況下,節(jié)省不少性能開銷。

六、Bitmap優(yōu)化:

1)減少內(nèi)存開支:圖片過大,超過控件需要的大小的情況下,不要直接加載原圖,而是對圖片進行尺寸壓縮,方式是BitmapFactroy.Options 采樣,inSampleSize 轉成需要的尺寸的圖片。

2)減少流量開銷:對圖片進行質(zhì)量壓縮,再上傳服務器。圖片有三種存在形式:硬盤上時是file,網(wǎng)絡傳輸時是stream,內(nèi)存中是stream或bitmap,所謂的質(zhì)量壓縮,它其實只能實現(xiàn)對file的影響,你可以把一個file轉成bitmap再轉成file,或者直接將一個bitmap轉成file時,這個最終的file是被壓縮過的,但是中間的bitmap并沒有被壓縮。bitmap.compress(Bitmap.CompressFormat.PNG,100,bos);

七、線程優(yōu)化:

使用線程池。為什么要用線程池?

1、從“為每個任務分配一個線程”轉換到“在線程池中執(zhí)行任務”

2、通過重用現(xiàn)有的線程而不是創(chuàng)建新線程,可以處理多個請求在創(chuàng)建銷毀過程中產(chǎn)生的巨大開銷

3、當使用線程池時,在請求到來時間 ,不用等待系統(tǒng)重新創(chuàng)建新的線程,而是直接復用線程池中的線程,這樣可以提高響應性。

4、通過和適當調(diào)整線程池的大小 ,可以創(chuàng)建足夠多的線程以使處理器能夠保持忙碌狀態(tài),同時還可以防止過多線程相互競爭資源而使應用程序耗盡內(nèi)存或者失敗。

5、一個App里面所有的任務都放在線程池中執(zhí)行后,可以統(tǒng)一管理 ,當應用退出時,可以把程序中所有的線程統(tǒng)一關閉,避免了內(nèi)存和CPU的消耗。

6、如果這個任務是一個循環(huán)調(diào)度任務,你則必須在這個界面onDetach方法把這個任務給cancel掉,如果是一個普通任務則可cancel,可不cancel,但是最好cancel

7、整個APP的總開關會在應用退出的時間把整個線程池全部關閉。

八、一些性能優(yōu)化建議:

1)避免創(chuàng)建過多對象,造成頻繁的gc

2)不要過多使用枚舉,枚舉占用的空間比整型大很多

3)字符串的拼接使用StringBuffer、StringBuilder來替代直接使用String,因為使用String會創(chuàng)建多個String對象,參考第一條。

4)適當使用軟引用,(弱引用就不太推薦了)

5)使用內(nèi)存緩存和磁盤緩存。

Android分享實現(xiàn)總結

1.調(diào)用系統(tǒng)的分享功能

2.通過第三方SDK,如ShareSDK,友盟等

3.自行使用各自平臺的SDK,比如QQ,微信,微博各自的SDK

本文只是關于如何實現(xiàn)Android系統(tǒng)分享,并非第三方SDK實現(xiàn)方法

Android開發(fā)時通過startActivity發(fā)送action為Intent.ACTION_SEND的Intent即很容易就可以實現(xiàn)系統(tǒng)分享功能,舉個簡單例子看看:

從例子中,可以發(fā)現(xiàn)實現(xiàn)系統(tǒng)分享主要由三部分Action、Extras和Type組成。首先將Intent的cation設置為Intent.ACTION_SEND,其次根據(jù)分享的內(nèi)容設置不同的Type,然后根據(jù)不同的社交平臺設置相關Extras,最后將Intent發(fā)送出去即可完成系統(tǒng)分享。

1.如何將自己的應用能夠顯示在系統(tǒng)分享的應用選擇框中?

根據(jù)以上介紹,我們可以在應用清單文件中使用intent-filter來完成;

2.如何監(jiān)聽在應用選擇框中,選擇了那個應用?

需要采用BroadcastReceiver來實現(xiàn):(該方法在部分手機上可以實現(xiàn),并且需要API Level大于等于22)

3.如何為制定應用設置分享type?

4.如何只顯示指定的應用?

五、Android繪制知識總結(Xfermode和硬件加速)

Xfermode表示圖層的混合模式,用于描述兩個圖層之間進行融合時,像素點進行計算的規(guī)則。

在API16之前,Xfermode有3個子類:AvoidXfermode、PixelXorXfermode、PorterDuffXfermode。但在API16以后,前兩個已經(jīng)過時,甚至從源碼里移除,所以我們只需學習 PorterDuffXfermode 即可。

PorterDuffXfermode 最早是在1984年由Porter和Duff兩人發(fā)表的論文《Compositing Digital Images》中出現(xiàn),所以該混合模式也根據(jù)作者來命名。

PorterDuffXfermode 構造函數(shù)需要指定一個 PorterDuff.Mode ,而PorterDuff.Mode在以下地方都會涉及:

它提供18種模式可選項:

各種模式下的效果如下圖所示:

這里可以發(fā)現(xiàn),兩種效果是不一樣的,谷歌官方給的是第一種,但是,通常情況應該是第二種,具體原因可 參考該文章 。比如我們畫一個矩形,應該按第二種效果來考慮,因為源圖和目標圖大小不一致;如果畫相同大小的Bitmap,則按第一種做。

在實際應用中,我們可以從以下三個方面來決定使用哪種模式:

1、沒有硬件加速:

invalidate the view hierarchy ------ draw the view hierarchy

2、有硬件加速:

invalidate the view hierarchy ------ record and update the display list ------ draw the display list

1、繪制不正確:可能使用了不支持硬件加速的操作, 需要關閉硬件加速或者繞過該操作

2、拋出異常:可能使用了不支持硬件加速的操作, 需要關閉硬件加速或者繞過該操作

在Android系統(tǒng)中,有4個不同級別的打開或者關閉硬件加速操作:

1、Application級別:

application android:hardwareAccelerated="false"

默認為true,用于控制這個app是否開啟硬件加速。

2、Activity級別:

activity android:hardwareAccelerated="false"

3、Window級別:(只支持開啟操作)

getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

4、View級別:(只支持關閉操作)

view.setLayerType(View.LAYER_TYPE_HARDWARE, null);

LAYER_TYPE_HARDWARE ,使用硬件加速(GPU)進行繪制

LAYER_TYPE_SOFTWARE ,使用CPU進行繪制

或者布局文件中,指定以下屬性:

android:layerType="software"

1、view.isHardwareAccelerated()

如果返回true,表示view掛在一個開啟了硬件加速的Window之下,也就意味著,它在繪制時,并不一定開啟了硬件加速。

2、canvas.isHardwareAccelerated()

如果返回true,因為著canvas在繪制的時候啟用了硬件加速,盡量采用此方法來判斷是否開啟了硬件加速。

分享文章:android總結,android方法大全
文章位置:http://sd-ha.com/article44/dsesghe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、ChatGPT、全網(wǎng)營銷推廣、電子商務、網(wǎng)站策劃、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名