欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android方案,安卓方案定制開發(fā)

Android -- 保活方案

1、前臺進程:當前運行的進程,除非APP的內(nèi)存超過系統(tǒng)給定的最大內(nèi)存,導致OOM才會被殺掉

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供賀蘭網(wǎng)站建設(shè)、賀蘭做網(wǎng)站、賀蘭網(wǎng)站設(shè)計、賀蘭網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、賀蘭企業(yè)網(wǎng)站模板建站服務,十多年賀蘭做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務。

2、可見進程、服務進程:當前可見、運行的音樂這種

3、空進程:給新打開的APP使用,優(yōu)先級最低

Service 的啟動方式有兩種,一種是startService(),一種是bindService().這兩種方式有有什么區(qū)別.

startService(),啟動完之后該service就在后臺運行,其生命周期跟啟動它的Context沒有任何關(guān)系。也不能跟Context通訊。

bindService()啟動之后生命周期跟啟動它的Context有關(guān),比如Activity、fragment、service等。在Context中解綁之后,如果改Service沒有任何綁定后該Service也就結(jié)束。

Service 的生命周期跟啟動方式有關(guān)。

stratService的生命周期: onCreate() - onStartCommand() - onDestroy()

bindService的生命周期: onCreate() - onBind() - onUnbind() - onDestroy()

1.PARTIAL_WAKE_LOCK:保證CPU保持高性能運行,而屏幕和鍵盤背光(也可能是觸摸按鍵的背光)關(guān)閉。一般情況下都會使用這個WakeLock。

2.ACQUIRE_CAUSES_WAKEUP:這個WakeLock除了會使CPU高性能運行外還會導致屏幕亮起,即使屏幕原先處于關(guān)閉的狀態(tài)下。

3.ON_AFTER_RELEASE:如果釋放WakeLock的時候屏幕處于亮著的狀態(tài),則在釋放WakeLock之后讓屏幕再保持亮一小會。如果釋放WakeLock的時候屏幕本身就沒亮,則不會有動作。

1.PARTIAL_WAKE_LOCK:保證CPU保持高性能運行,而屏幕和鍵盤背光(也可能是觸摸按鍵的背光)關(guān)閉。一般情況下都會使用這個WakeLock。

2.ACQUIRE_CAUSES_WAKEUP:這個WakeLock除了會使CPU高性能運行外還會導致屏幕亮起,即使屏幕原先處于關(guān)閉的狀態(tài)下。

3.ON_AFTER_RELEASE:如果釋放WakeLock的時候屏幕處于亮著的狀態(tài),則在釋放WakeLock之后讓屏幕再保持亮一小會。如果釋放WakeLock的時候屏幕本身就沒亮,則不會有動作。

對于 API level 18 :調(diào)用startForeground(ID, new Notification()),發(fā)送空的Notification ,圖標則不會顯示。

對于 API level = 18:在需要提優(yōu)先級的service A啟動一個InnerService,兩個服務同時startForeground,且綁定同樣的 ID。Stop 掉InnerService ,這樣通知欄圖標即被移除。

該方案過于流氓,而且效果不好,所以不寫。

JobSchedule 允許在特定狀態(tài)與特定時間間隔周期執(zhí)行任務。我們可以利用它的這個特點來完成保活功能,效果就像開啟一個定時器,與普通定時器不同的是其調(diào)度由系統(tǒng)來完成。

在發(fā)送特定系統(tǒng)事件時,系統(tǒng)會發(fā)出廣播,通過在AndroidManifest中靜態(tài)注冊對應的廣播監(jiān)聽,即可在發(fā)送響應事件時拉活。

但是Android7.0開始,對廣播進行了限制,而且在8.0更加嚴格。

Android8.0開始對廣播有了限制:很多隱式廣播接收器不能在清單中靜態(tài)注冊。但清單注冊廣播接收器仍是可以的(豁免廣播或自定義廣播-注意,自定義廣播要顯式發(fā)送)。實現(xiàn)隱式廣播(系統(tǒng)廣播)的接收也是可以的,但只能通過動態(tài)注冊來實現(xiàn)了。

有多個app在用戶設(shè)備上安裝,只要開啟其中一個, 就可以將其他的app也拉活。

具體實現(xiàn):

一、系統(tǒng)同步機制拉活

總結(jié) - Android UI適配方案

1、最原始的dp+自適應布局+weight,多套dimens.xml

缺點:只能滿足90%以上的手機,同一像素的手機,dpi不一樣

2、smallestWidth適配,res 文件夾下創(chuàng)建各種屏幕分辨率對應的 values-sw{xxx}dp 文件夾

缺點: 1、包會增加500kb左右

2、只支持3.2及以上的系統(tǒng)

3、AutoSize今日頭條屏幕適配方案

當前設(shè)備屏幕總寬度(單位為像素)/ 設(shè)計圖總寬度(單位為 dp) = density

原理:調(diào)用Android API,根據(jù)設(shè)備某一維度(寬或高)的真實長度(單位是px)與這一維度在UI設(shè)計圖上的dp值之間的關(guān)系,重新計算density來實現(xiàn)

缺點: 第三方庫適配

Android保活方案

系統(tǒng)出于性能和體驗上的考慮,APP退到后臺后并不會真正的kill、掉進程,而是將其緩存起來。

打開的應用越多,緩存的應用也就越多,在系統(tǒng)進程不足的情況下,系統(tǒng)根據(jù)自己的一套進程回收機制,來判斷kill掉哪些進程,以騰出進程給需要的app,這套進程回收機制叫做low memory killer。

內(nèi)存閥值,每個手機都不一樣,當可用內(nèi)存小于該值得時候,Android就會殺死對應優(yōu)先級得進程。

進程的優(yōu)先級通過oom_adj來判斷,oom_adj取值如下:

0-3是比較安全的oom_adj一般不會被系統(tǒng)殺死的,所以我們只要保證自己的app oom_adj在0-3之間就可以了。

可以通過adb命令:cat /proc /4181/oom_adj來查看自己app的oom_adj的值

4181是進程號

原理:手機關(guān)閉屏幕的時候,偷偷創(chuàng)建一個activity,讓應用成為前臺進程,打開屏幕時關(guān)閉activity,這樣用戶就不會發(fā)現(xiàn)什么異常,我們知道前臺應用的oom_adj為0是不會被殺死的,這樣就達到看保活的目的。

缺點:activity不夠干凈,只有在息屏的時候才生效,存在局限性比較大,而且谷歌原生的系統(tǒng)息屏的時候不會清理進程,但是現(xiàn)在很多廠商會在息屏的時候清理內(nèi)存,所以本方案的可行性不高,可以作為了解。

保活原理:啟動一個前臺服務,從而拉高整個應用的優(yōu)先級。

因為一旦通知被用戶干掉那么該保活方案就不好用了,所以通知圖標存在與否是該方案是否可行的關(guān)鍵。

但是該方案是谷歌官方承認的保活方案,所以可行性還是很高的。

需要適配

API18通知圖標不會顯示

API=18API26可以啟動雙服務,綁定同樣的D,然后stop

這個方法的原理是8.0系統(tǒng)之前會根據(jù)服務的id來判斷通知,那么第二個id設(shè)置跟第一個相同,然后自殺,系統(tǒng)就會誤認為此通知已死就不會通知了,那么通知欄上面就不會顯示

API=26后暫時沒有方式能夠隱藏

8.0之后不可以創(chuàng)建同樣的id的通知,所以此隱藏通知的方法就不好用了,當然了,通知顯示與否不是該方案成功的評判標準,所以說還是可以用的。

在發(fā)生特定系統(tǒng)事件時,系統(tǒng)會發(fā)出廣播,通過在 Androidmanifest中靜

態(tài)注冊對應的廣播監(jiān)聽器,即可在發(fā)生響應事件時拉活

但是從 android7.0開始,對廣播進行了限制,而且在8.0更加嚴格該方法就不適用了。

有多個app在用戶設(shè)備上安裝,只要開啟其中一個就可以將其他的app也拉

活。比如手機里裝了手Q、QQ空間、興趣部落等等,那么打開任意一個app后,其

他的app也都會被喚醒

系統(tǒng)每隔一段時間會進行賬戶同步,當系統(tǒng)去賬戶同步的時候(不一定多長時間,跟系統(tǒng)有關(guān)),我們就去拉活app,這個方案是非常穩(wěn)定的,當然了國內(nèi)的系統(tǒng)都是定制的,所以還是需要一定的適配的。

優(yōu)點:系統(tǒng)喚醒,比較穩(wěn)定

缺點:時間不能把控

JobScheduler允許在特定狀態(tài)與特定時間間隔周期執(zhí)行任務。可以利

用它的這個特點完成保活的功能,效果即開啟一個定時器,與普通定時器不

同的是其調(diào)度由系統(tǒng)完成。

同樣在某些ROM可能并不能達到需要的效果

android布局解決方案(匯總)

概述:記錄一下常見布局的編寫方式。

答:使用recyclerView的網(wǎng)格布局即可。

答:使用別人的開源組件。

應用場景,b站視頻的標簽,商品標簽等等。

答:使用LinearLayout布局,設(shè)置weightSum屬性,子view設(shè)置layout_weight屬性。記住需要把設(shè)定的寬度或者高度設(shè)置0dp。

答:使用RelativeLayout布局,最后一個子View會顯示在屏幕的最上方,不會被遮擋,常用來做activity標題頭(titlebar)。

答:使用如下屬性即可。

答:推薦使用NestedScrllView。

答:參考:

答:如下

在布局中添加如下屬性

待補充。。。

Android后臺進程保活方案

思想: 使用 Linux 中的 fork 機制創(chuàng)建 Native 進程,在 Native 進程中監(jiān)控主進程的存活,當主進程掛掉后,在 Native 進程中立即對主進程進行拉活。

原理: 在 Android 中所有進程和系統(tǒng)組件的生命周期受 ActivityManagerService 的統(tǒng)一管理。Android5.0以下通過 Linux 的 fork 機制創(chuàng)建的進程為純 Linux 進程,其生命周期不受 Android 的管理。

該方案主要適用于 Android5.0 以下版本手機。

該方案不受 forceclose 影響,被強制停止的應用依然可以被拉活,在 Android5.0 以下版本拉活效果非常好。

詳情

對于 Android5.0 以上手機,系統(tǒng)雖然會將native進程內(nèi)的所有進程都殺死,這里其實就是系統(tǒng)“依次”殺死進程時間與拉活邏輯執(zhí)行時間賽跑的問題,如果可以跑的比系統(tǒng)邏輯快,依然可以有效拉起。在 某些 Android 5.0 以上機型有效。

詳情

作者5.0以下系統(tǒng)用一個java進程和一個fork出來的純native進程雙管道互鎖監(jiān)聽對方的狀態(tài),無論哪個被殺后都拉起第三個進程,第三個進程來拉活常駐進程,實現(xiàn)拉活。

5.0以上同一進程組的進程會被同時殺死,所以5.0以上使用雙java進程在native層互鎖文件實現(xiàn)監(jiān)聽,但任務管理器會在短時間內(nèi)殺死所有進程,只能用反射提前初始化pacel,在進程被殺的時候和系統(tǒng)搶那幾十毫秒的時間發(fā)送一個拉活的廣播。用4個文件來讓兩個進程實現(xiàn)互鎖來做監(jiān)聽,但實際效果很一般,測試了幾個5.0以上的國產(chǎn)機型都不行,效果是根本監(jiān)聽不到進程被殺,目測原因是當任務管理器查殺進程的時候?qū)⑺械倪M程都掛起了,隨后全部殺掉,并在一段時間內(nèi)禁止進程啟動。

PersistedJobService.java

BootReceiver.java靜態(tài)注冊BroadcastReceiver

注冊,開機,網(wǎng)絡(luò)切換、拍照、拍視頻時候,利用系統(tǒng)產(chǎn)生的廣播也能喚醒app,不過Android N已經(jīng)將這三種廣播取消了

常用的拉活權(quán)限

BackgroundService.java

WakeLock

作為前臺應用運行,提高應用存活幾率

service被關(guān)掉后自動啟動

START_STICKY

如果系統(tǒng)在onStartCommand返回后被銷毀,系統(tǒng)將會重新創(chuàng)建服務并依次調(diào)用onCreate和onStartCommand(注意:根據(jù)測試Android2.3.3以下版本只會調(diào)用onCreate根本不會調(diào)用onStartCommand,Android4.0可以辦到),這種相當于服務又重新啟動恢復到之前的狀態(tài)了)。

START_NOT_STICKY

如果系統(tǒng)在onStartCommand返回后被銷毀,如果返回該值,則在執(zhí)行完onStartCommand方法后如果Service被殺掉系統(tǒng)將不會重啟該服務。

START_REDELIVER_INTENT

START_STICKY的兼容版本,不同的是其不保證服務被殺后一定能重啟。

service注冊,權(quán)限設(shè)置為高優(yōu)先級

KeepAliveService.java

注冊,在新的獨立進程內(nèi)啟動,適用5.0以下的原生系統(tǒng),5.0以上同樣會被殺死

他的局限性在于:

第一,用戶會在系統(tǒng)設(shè)置的賬戶列表里面看到一個不認識的賬戶;

第二,同步的事件間隔是有限制的,最短1分鐘,見源碼,如果小雨60秒,置為60秒。而且各種國產(chǎn)機怎么改的源碼我們未可知,是不是都能用仍然未可知;

第三,很致命,某些手機比如note3需要手動設(shè)置賬戶,你如何騙你的用戶給你手動設(shè)置賬戶完了之后不卸載你;

第四,也很致命,必須聯(lián)網(wǎng)!google提供這個組件是讓你同步賬戶信息,不聯(lián)網(wǎng)你同步個鬼,我們要保活,可以不聯(lián)網(wǎng)不做事,但是不能不聯(lián)網(wǎng)就死

集成三方推送平臺sdk,友盟極光等

當前標題:android方案,安卓方案定制開發(fā)
路徑分享:http://chinadenli.net/article26/dsgepcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣標簽優(yōu)化定制網(wǎng)站微信小程序外貿(mào)建站網(wǎng)站導航

廣告

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

搜索引擎優(yōu)化