android通訊開發
❶ 請問如何開發android IM即時通訊軟體
就想普通開發一樣,用java開發客戶端軟體。主要是服務端比較難,需要伺服器的。
❷ 請問如何開發android IM即時通訊軟體
主要是服務端比較難,需要伺服器的。
❸ Android開發之串口通信:AndroidSerialPort
Android 串口通信,基於 谷歌官方android-serialport-api 編譯
項目github地址: https://github.com/AIlll/AndroidSerialPort
讀取數據時很可能會遇到分包的情況,即不能一次性讀取正確的完整的數據
解決辦法:可以在讀取到數據時,讓讀取數據的線程sleep一段時間,等待數據全部接收完,再一次性讀取出來。這樣應該可以避免大部分的分包情況
只接收一條數據的情況下,以上方法可以應對數據分包,數據量多的情況下需要考慮是否會因為sleep導致接收多條數據,可以根據通信協議核對包頭包尾等參數。
打開串口時,會檢測讀寫許可權,當沒有許可權時,會嘗試對其進行提權
❹ 請教android即時通訊開發的思路
TCP 需要一台伺服器進行中間處理 或者在區域網內通訊 獲取信息 壓縮 socket 去研究下webrtc吧
❺ IM即時通訊開發如何實現Android版智能心跳機制
IM即時通訊開發如何實現Android版智能心跳機制。
大體思路
a)延遲心跳測試法:這是測試結果准確的前提保障,我們認為長連接建立後連續三次成功的短心跳就可以很大程度的保證下一次心跳環境是正常的。
b)成功一次認定,失敗連續累積認定:成功是絕對的,連續失敗多次才可能是失敗。
c)臨界值避免:我們使用比計算出的心跳稍微小一點的值做為穩定心跳避免臨界值。
d)動態調整:即使在一次完整的智能心跳計算過程中,我們沒有找到最好的值,我們還有機會來進行校正。
方案需考慮到影響連接壽命的思素
在Android下,不管是GCM,還是微信,都是通過TCP長連接來進行消息收發的,TCP長連接存活,消息收發就及時,所以要對影響TCP連接壽命的因素進行研究。
1、NAT超時
大部分移動無線網路運營商都在鏈路一段時間沒有數據通訊時,會淘汰 NAT 表中的對應項,造成鏈路中斷(NAT超時的更多描述見附錄9.1)。NAT超時是影響TCP連接壽命的一個重要因素(尤其是國內),所以客戶端自動測算NAT超時時間,來動態調整心跳間隔,是一個重要的優化點。
2、DHCP的租期 (lease time)
目前測試發現安卓系統對DHCP的處理有Bug,DHCP租期到了不會主動續約並且會繼續使用過期IP,這個問題會造成TCP長連接偶然的斷連。(租期問題的具體描述見附錄9.2)。
3、網路狀態變化
手機網路和WIFI網路切換、網路斷開和連上等情況有網路狀態的變化,也會使長連接變為無效連接,需要監聽響應的網路狀態變化事件,重新建立Push長連接。
心跳范圍選擇
1、前後台區分處理:
為了保證微信收消息及時性的體驗,當微信處於前台活躍狀態時,使用固定心跳。微信進入後台(或者前台關屏)時,先用幾次最小心跳維持長鏈接。然後進入後台自適應心跳計算。這樣做的目的是盡量選擇用戶不活躍的時間段,來減少心跳計算可能產生的消息不及時收取影響。
2、後台自適應心跳選擇區間:
可根據自身產品的特點選擇合適的心跳范圍。
自適應心跳演算法量化描述
因為每個網路的NAT時間可能不一致。所以需要區分計算,數據網路按subType做關鍵字,WIFI按WIFI名做關鍵字。對穩定的網路,因為NAT老化時間的存在,在自適應計算態的時候,暫設計以下步驟在當前心跳區間逼近出最大可用的心跳。 即時通訊聊天軟體app開發可以加蔚可雲的v:weikeyun24咨詢
a)變數說明:
[MinHeart,MaxHeart]——心跳可選區間。
successHeart——當前成功心跳,初始為MinHeart
curHeart——當前心跳初始值為successHeart
heartStep——心跳增加步長
successStep——穩定期後的探測步長
經過該流程,會找到必然使心跳失敗的curHeart(或者MaxHeart),為了保險起見,我們選擇比前一個成功值稍微小一點的值作為後台穩定期的心跳間隔。
影響手機網路測試的因素太多,為了盡量保證測試結果的可靠性,我們使用延遲心跳測試法。在我們重新建立TCP連接後,先使用 短心跳連續成功三次,我們才認為網路相對穩定,可以使用curHeart進行一次心跳測試。圖4-2顯示了一次有效心跳測試過程。圖4-3顯示了在沒有達到穩定網路環境時,我們會一直使用固定短心跳直到滿足三次連續短心跳成功。
使用延遲心跳測試的好處是,可以剔除偶然失敗,和網路變化較大的情況(如地鐵),使測試結果相對可靠(五次延遲測試確定結論)。同時在網路波動較大的情況,使用短心跳,保證收取消息相對及時。
c)運行時的動態調整策略(已經按測算心跳穩定值後)
NAT超時值算出來後,在維持心跳的過程中的策略。
- 無網路、網路時好時壞、偶然失敗、NAT超時變小:
在後台穩定期發生心跳發生失敗後,我們使用延遲心跳測試法測試五次。如果有一次成功,則保持當前心跳值不變;如果五次測試全失敗,重新計算合理心跳值。該過程如圖4-4所示,有一點需要注意,每個新建的長連接需要先用短心跳成功維持3次後才用successHeart進行心跳。
NAT超時變大:
以周為周期,每周三將後台穩定態調至自適應計算態,使用心跳延遲法往後探測心跳間隔。
- successHeart是NAT超時臨界值:
因為我們現在選擇的是一個比successHeart稍小的值作為穩定值,所以在計算過程中可以避開臨界值。當運營商在我們後台穩定期將NAT超時調整為我們當前計算值,那麼由於我們每周會去向下探索,所以下一周探測時也可以及時調整正確。
d)冗餘Sync和心跳
在用戶的一些主動操作以及聯網狀態改變時,增加冗餘Sync和心跳,確保及時收到消息。
1、當用戶點亮屏幕的時候,做一次心跳。
2、當微信切換到前台時,做一次Sync。
3、聯網時重建信令TCP,做一次Sync。
可能存在的風險及預防措施
DHCP租期因素:
1、問題:根據目前的測試結果顯示,安卓不續約到期的IP Bug,會導致TCP連接在不確定的時間點失效,從而會導致一次心跳失敗。
2、預防:統計後台穩定期的心跳成功率,上報給後台。後台可以按地區分網路監控這個指標的波動,並且後台可以根據不同的波動,動態調整某區域特定網路下可選的心跳區間。
NAT超時介紹
因為 IP v4 的 IP 量有限,運營商分配給手機終端的 IP 是運營商內網的 IP,手機要連接 Internet,就需要通過運營商的網關做一個網路地址轉換(Network Address Translation,NAT)。簡單的說運營商的網關需要維護一個外網 IP、埠到內網 IP、埠的對應關系,以確保內網的手機可以跟 Internet 的伺服器通訊。
❻ android開發中跨進程通信有幾種方式
Android進程間通信的幾種方式 定義多進程
第一:Android應用中使用多進程只有一個辦法(用NDK的fork來做除外),就是在AndroidManifest.xml中聲明組件時,用android:process屬性來指定。
不知定process屬性,則默認運行在主進程中,主進程名字為包名。
android:process = package:remote,將運行在package:remote進程中,屬於全局進程,其他具有相同shareUID與簽名的APP可以跑在這個進程中。
android:process = :remote ,將運行在默認包名:remote進程中,而且是APP的私有進程,不允許其他APP的組件來訪問。
第二:多進程引發的問題
靜態成員和單例失效:每個進程保持各自的靜態成員和單例,相互獨立。
線程同步機制失效:每個進程有自己的線程鎖。
SharedPreferences可靠性下降:不支持並發寫,會出現臟數據。
Application多次創建:不同進程跑在不同虛擬機,每個虛擬機啟動會創建自己的Application,自定義Application時生命周期會混亂。
綜上,不同進程擁有各自獨立的虛擬機,Application,內存空間,由此引發一系列問題。
第三: 進程間通信
Bundle/Intent傳遞數據:
可傳遞基本類型,String,實現了Serializable或Parcellable介面的數據結構。Serializable是Java的序列化方法,Parcellable是Android的序列化方法,前者代碼量少(僅一句),但I/O開銷較大,一般用於輸出到磁碟或網卡;後者實現代碼多,效率高,一般用戶內存間序列化和反序列化傳輸。
文件共享:
對同一個文件先後寫讀,從而實現傳輸,linux機制下,可以對文件並發寫,所以要注意同步。順便一提,Windows下不支持並發讀或寫。
Messenger:
Messenger是基於AIDL實現的,服務端(被動方)提供一個Service來處理客戶端(主動方)連接,維護一個Handler來創建Messenger,在onBind時返回Messenger的binder。
雙方用Messenger來發送數據,用Handler來處理數據。Messenger處理數據依靠Handler,所以是串列的,也就是說,Handler接到多個message時,就要排隊依次處理。
AIDL:
AIDL通過定義服務端暴露的介面,以提供給客戶端來調用,AIDL使伺服器可以並行處理,而Messenger封裝了AIDL之後只能串列運行,所以Messenger一般用作消息傳遞。
通過編寫aidl文件來設計想要暴露的介面,編譯後會自動生成響應的java文件,伺服器將介面的具體實現寫在Stub中,用iBinder對象傳遞給客戶端,客戶端bindService的時候,用asInterface的形式將iBinder還原成介面,再調用其中的方法。
ContentProvider:
系統四大組件之一,底層也是Binder實現,主要用來為其他APP提供數據,可以說天生就是為進程通信而生的。自己實現一個ContentProvider需要實現6個方法,其中onCreate是主線程中回調的,其他方法是運行在Binder之中的。自定義的ContentProvider注冊時要提供authorities屬性,應用需要訪問的時候將屬性包裝成Uri.parse("content://authorities")。還可以設置permission,readPermission,writePermission來設置許可權。 ContentProvider有query,delete,insert等方法,看起來貌似是一個資料庫管理類,但其實可以用文件,內存數據等等一切來充當數據源,query返回的是一個Cursor,可以自定義繼承AbstractCursor的類來實現。
Socket:
學過計算機網路的對Socket不陌生,所以不需要詳細講述。只需要注意,Android不允許在主線程中請求網路,而且請求網路必須要注意聲明相應的permission。然後,在伺服器中定義ServerSocket來監聽埠,客戶端使用Socket來請求埠,連通後就可以進行通信。
❼ 昆明北大青鳥分享Android開發需要學習哪些內容
隨著移動互聯網的發展,各種智能手機APP接踵而來,在手機APP應用市場中,數量最多的就是Android開發的手機軟體了。Android開發也成為當下較熱門行業。那麼,昆明北大青鳥http://www.kmbdqn.com/就告訴你,想要學習Android開發,需要學習哪些課程?
Java面向對象編程
1、Java基本數據類型與表達式,分支循環。
2、String和StringBuffer的使用、正則表達式。
3、面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類,Java的垃極回收機制,Javadoc介紹。
4、對象實例化過程、方法的覆蓋、final關鍵字、抽象類、介面、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和介面在多態中的應用、多態帶來的好處。
5、Java異常處理,異常的機制原理。
6、常用的設計模式:Singleton、Template、Strategy模式。
7、JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8、Java集合介紹:Collection、Set、List、ArrayList、Vector、LinkedList、Hashset、TreeSet、Map、HashMap、TreeMap、Iterator、Enumeration等常用集合類API。
9、JavaI/O輸入輸出流:File和FileRandomAccess類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應實現類,IO性能分析,位元組和字元的轉化流,包裝流的概念,以及常用包裝類,計算機編碼。
10、Java高級特性:反射、代理和泛型。
11、多線程原理:如何在程序中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
12、Socket網路編程。
Javaweb開發
1、Java解析XML文件DOM4J。
2、MySql資料庫的應用、多表連接查詢的應用。
3、Jsp和Servlet應用。
4、Http協議解析。。
5、Tomcat伺服器的應用配置。
6、WebService服務配置應用。
androidUI編程
1、Android開發環境搭建:Android介紹,Android開發環境搭建,先進個Android應用程序,Android應用程序目錄結構。
2、Android初級控制項的使用:TextView控制項的使用Button控制項的使用方法EditText控制項的使用方法ImageView的使用方法RadioButton的使用方法Checkbox的使用方法Menu的使用方法。
3、Android高級控制項的使用:Autocompletion的使用方法ListView的使用方法GridView的使用方法Adapter的使用方法Spinner的使用方法Gallary的使用方法ScrollView的使用方法。
4、對話框與菜單的使用:Dialog的基本概念AlertDialog的使用方法DatePickerDialog的使用方法Menu的使用方法自定義Menu的實現方法。
5、控制項的布局方法:線性布局的使用方法相對布局的使用方法表格布局的使用方法。
6、多Acitivity管理:AndroidManifest.xml文件的作用,Intent的使用方法,使用Intent傳遞數據的方法,啟動Activity的方法,IntentFilter的使用方法,ActivityGroup的使用方法。
7、自定義控制項實現方法:自定義ListView的實現方法,可折疊ListView的使用方法,自定義Adapter的實現方法,自定義View的實現方法,動態控制項布局的上實現方法。
❽ Android藍牙開發(二)經典藍牙消息傳輸實現
上篇文章中,我們主要介紹了藍牙模塊,傳統/經典藍牙模塊BT和低功耗藍牙BLE及其相關的API,不熟悉的可以查看 Android藍牙開發(一)藍牙模塊及核心API 進行了解。
本篇主要記錄用到的經典藍牙開發流程及連接通訊。
藍牙連接前,給與相關系統許可權:
安卓6.0以上系統要動態請求及獲取開啟GPS內容:
藍牙核心對象獲取,若獲取對象為null則說明設備不支持藍牙:
判斷藍牙是否開啟,沒有則開啟:
藍牙掃描:
取消掃描:
藍牙監聽廣播,監聽藍牙開關,發現設備,掃描結束等狀態,定義狀態回調介面,進行對應操作,例如:監聽到藍牙開啟後,進行設備掃描;發現設備後進行連接等。
客戶端,與服務端建立長連接,進行通訊:
服務端監聽客戶端發起的連接,進行接收及通訊:
客戶端連接及服務端監聽基類,用於客戶端和服務端之前Socket消息通訊,進行消息或文件的發送、接收,進行通訊關閉操作等:
我這里只是簡單記錄了項目中用到的藍牙通訊,兩個設備之間不通過配對進行連接、通訊。
相關詳細內容及使用請查看Github項目: https://github.com/MickJson/BluetoothCS
藍牙配對操作及其它內容,可以詳細查看我下面的參考資料,寫的十分詳細,比如設備通過MAC地址,可以通過BluetoothAdapter獲取設備,再通過客戶端connect方法去進行連接等。
連接中遇到問題:read failed, socket might closed or timeout, read ret: -1。
通過改UUID,反射等方法都還是會出現錯誤。連接時,要確保服務端及客戶端都處於完全斷開狀態,否則連接就會出現以上問題,但偶爾還是會有問題,期待有什麼好的方法可留言告訴我。
參考資料:
Android-經典藍牙(BT)-建立長連接傳輸短消息和文件
Android藍牙開發—經典藍牙詳細開發流程
歡迎點贊/評論,你們的贊同和鼓勵是我寫作的最大動力!
❾ 盤點im即時通訊開發中Android後台保活方案
對於IM應用和消息推送服務的開發者來說,在Android機型上的後台保活是個相當頭疼的問題。
老闆一句:「為什麼微信、QQ能收到消息,而你寫的APP卻不行?」,直接讓人崩潰,話說老闆你這APP要是整成微信、APP那麼牛,直接進手機廠商白名單,還要程序員在這瞎忙活?
好了,抱怨歸抱怨,活還得干,不然靠誰養活廣大苦逼的程序員?
正因為Android系統版本的差異,也導致了各種保活黑科技的運行效果大相徑庭,所以本文正好藉此機會,盤點一下當前主流(截止2019年前)的保活黑科技在市面上各版本Android手機上的運行效果,希望能給大家提供一些客觀的參考。
其實Android端APP搞保活的目的倒不是為了干什麼見不得人的壞事(但不排除動機不純的開發者),主要是像IM即時通訊應用和資訊類應用等需要搞後台消息推送、運動類應用需要在後台實時監測用戶的運動數據等,因為現在越來越多的手機廠商為了省電策略考慮,基本上如果你的應用沒有被加入白名單,一旦處於後台就會被系統限制甚至幹掉,但使用APP的用戶才不聽你這些解釋——反正「我」就要你的APP能如期正常運行,開發者也是不得已而為之。
以消息推送為例,當APP處於後台或關閉時,消息推送對於某些應用來說非常有用,比如:
1)IM即時通訊聊天應用:聊天消息通知、音視頻聊天呼叫等,典型代表有:微信、QQ、易信、米聊、釘釘、Whatsup、Line;
2)新聞資訊應用:最新資訊通知等,典型代表有:網易新聞客戶端、騰訊新聞客戶端;
3)SNS社交應用:轉發/關注/贊等通知,典型代表有:微博、知乎;
4)郵箱客戶端:新郵件通知等,典型代表有:QQ郵箱客戶端、Foxmail客戶端、網易郵箱大師;
5)金融支付應用:收款通知、轉賬通知等,典型代表有:支付寶、各大銀行的手機銀行等;
.... ....
在上述的各種應用中,尤其對於用戶接觸最多、最平常的IM聊天應用或新聞資訊來說,保活和消息推送簡直事關APP的「生死」,消息推送這種能力已經被越來越多的APP作為基礎能力之一,因為移動互聯網時代下,用戶的「全時在線」能力非常誘人和強大,能隨時隨地即時地將各種重要信息推送給用戶,無疑是非常有意義的。
題外話:實際上,對於後台消息推送能力,Android原版系統早就內置了系統級推送服務(跟iOS上的APNs服務是一個東西),它就是GCM服務(現在升級為FCM了),但眾所周之的原因,谷哥的服務在國內都是用不了的(你懂的)——無奈啊!
主要黑科技方案有:
1)監聽廣播:監聽全局的靜態廣播,比如時間更新的廣播、開機廣播、解鎖屏、網路狀態、解鎖加鎖亮屏暗屏(3.1版本),高版本需要應用開機後運行一次才能監聽這些系統廣播,目前此方案失效。可以更換思路,做APP啟動後的保活(監聽廣播啟動保活的前台服務);
2)定時器、JobScheler:假如應用被系統殺死,那麼定時器則失效,此方案失效。JobService在5.0,5.1,6.0作用很大,7.0時候有一定影響(可以在電源管理中給APP授權);
3)雙進程(NDK方式Fork子進程)、雙Service守護:高版本已失效,5.0起系統回收策略改成進程組。雙Service方案也改成了應用被殺,任何後台Service無法正常狀態運行;
4)提高Service優先順序:只能一定程度上緩解Service被立馬回收。 即時通訊聊天軟體app開發可以咨詢蔚可雲。
針對上述方案,具體的實現思路,通常是這樣的:
1)進程拉活:AIDL方式單進程、雙進程方式保活Service(最極端的例子就是推送廠商的互相喚醒復活:極光、友盟、以及各大廠商的推送,同派系APP廣播互相喚醒:比如今日頭條系、阿里系);
2)降低oom_adj的值:常駐通知欄(可通過啟動另外一個服務關閉Notification,不對oom_adj值有影響)、使用」1像素「的Activity覆蓋在getWindow()的view上(據傳某不可言說的IM大廠用過這個方案,雖然他們從未正面承認過)、循環播放無聲音頻(黑科技,7.0下殺不掉);
3)監聽鎖屏廣播:使Activity始終保持前台;
4)使用自定義鎖屏界面:覆蓋了系統鎖屏界面;
5)創建子進程:通過android:process屬性來為Service創建一個進程;
6)白名單:跳轉到系統白名單界面讓用戶自己添加app進入白名單。
使用AIDL綁定方式新建2個Service優先順序(防止服務同時被系統殺死)不一樣的守護進程互相拉起對方,並在每一個守護進程的ServiceConnection的綁定回調里判斷保活Service是否需要重新拉起和對守護線程進行重新綁定。
後台播放音樂這種保活方法,親身經歷過:
記得當時用的是某運動記步APP,它為了保活就是這么乾的。之所以被我發現,是因為在我的Android手機上,每次打開這個APP居然總能莫名其妙聽到若有若無的環境噪音樣的聲音,尤其安靜的場所下更明顯。我個人估計這個APP里用的保活音頻文件,很可能就是程序員在簡陋的條件下隨手自已錄制的,雖然也是不得以為之,但做法確實是有點粗糙。
總結一下,以上方案在當前主流手機上的運行效果
【1】雙進程守護方案(基於onStartCommand() return START_STICKY):
1)原生5.0、5.1:原生任務欄滑動清理app,Service會被殺掉,然後被拉起,接著一直存活;
2)金立F100(5.1):一鍵清理直接殺掉整個app,包括雙守護進程。不手動清理情況下,經測試能鎖屏存活至少40分鍾;
3)華為暢享5x(6.0):一鍵清理直接殺掉整個app,包括雙守護進程。不手動清理下,鎖屏只存活10s。結論:雙進程守護方案失效;
4)美圖m8s(7.1.1):一鍵清理直接殺掉整個app,包括雙守護進程。不清理情況下,鎖屏會有被殺過程(9分鍾左右被殺),之後重新復活,之後不斷被幹掉然後又重新復活。結論:雙守護進程可在後台不斷拉起Service;
5)原生7.0:任務欄清除APP後,Service存活。使用此方案後Service照樣存活;
6)LG V30+(7.1.2):不加雙進程守護的時候,一鍵清理無法殺掉服務。加了此方案之後也不能殺掉服務,鎖屏存活(測試觀察大於50分鍾);
7)小米8(8.1):一鍵清理直接幹掉app並且包括雙守護進程。不清理情況下,不加守護進程方案與加守護進程方案Service會一直存活,12分鍾左右closed。結論:此方案沒有起作用。
▲ 結論:除了華為此方案無效以及未更改底層的廠商不起作用外(START_STICKY欄位就可以保持Service不被殺)。此方案可以與其他方案混合使用。
【2】監聽鎖屏廣播打開1像素Activity(基於onStartCommand() return START_STICKY):
1)原生5.0、5.1:鎖屏後3s服務被幹掉然後重啟(START_STICKY欄位起作用);
2)華為暢享5x(6.0):鎖屏只存活4s。結論:方案失效;
3)美圖m8s(7.1.1):同原生5.0;
4)原生7.0:同美圖m8s;
5)LG V30+(7.1.2):鎖屏後情況跟不加情況一致,服務一致保持運行,結論:此方案不起作用;
6)小米8(8.1):關屏過2s之後app全部被幹掉。結論:此方案沒有起作用。
▲ 結論:此方案無效果。
【3】故意在後台播放無聲的音樂(基於onStartCommand() return START_STICKY):
1)原生5.0、5.1:鎖屏後3s服務被幹掉然後重啟(START_STICKY欄位起作用);
2)華為暢享5x(6.0):一鍵清理後服務依然存活,需要單獨清理才可殺掉服務,鎖屏8分鍾後依然存活。結論:此方案適用;
3)美圖m8s(7.1.1):同5.0;
4)原生7.0:任務管理器中關閉APP後服務被幹掉,大概過3s會重新復活(同僅START_STICKY欄位模式)。結論:看不出此方案有沒有其作用;
5)LG V30+(7.1.2):使用此方案前後效果一致。結論:此方案不起作用;
6)小米8(8.1):一鍵清理可以殺掉服務。鎖屏後保活超過20分鍾。
▲ 結論:成功對華為手機保活。小米8下也成功突破20分鍾。
【4】使用JobScheler喚醒Service(基於onStartCommand() return START_STICKY):
1)原生5.0、5.1:任務管理器中幹掉APP,服務會在周期時間後重新啟動。結論:此方案起作用;
2)華為暢享5x(6.0):一鍵清理直接殺掉APP,過12s左右會自動重啟服務,JobScheler起作用;
3)美圖m8s(7.1.1):一鍵清理直接殺掉APP,無法自動重啟;
4)原生7.0:同美圖m8s(7.1.1);
5)小米8(8.1):同美圖m8s(7.1.1)。
▲ 結論:只對5.0,5.1、6.0起作用。
【5】混合使用的效果,並且在通知欄彈出通知:
1)原生5.0、5.1:任務管理器中幹掉APP,服務會在周期時間後重新啟動。鎖屏超過11分鍾存活;
2)華為暢享5x(6.0):一鍵清理後服務依然存活,需要單獨清理才可殺掉服務。結論:方案適用;
3)美圖m8s(7.1.1):一鍵清理APP會被殺掉。正常情況下鎖屏後服務依然存活;
4)原生7.0:任務管理器中關閉APP後服務被幹掉,過2s會重新復活;
5)小米8(8.1):一鍵清理可以殺掉服務,鎖屏下後台保活時間超過38分鍾;
6)榮耀10(8.0):一鍵清理殺掉服務,鎖屏下後台保活時間超過23分鍾。
❿ 開發android即時通訊,需要學習什麼
您好:
Android開發前景看好,Android手機市場大賣,Android應用人氣火爆,Android開發工程師待遇更是水漲船高;與此同時,越來越多的大學生開始選擇學習Android開發,雖然Android開發比較嵌入式系統開發行業門檻相對較低,但是,學好Android開發還是需要一定的基礎。那麼學習Android開發到底需要掌握哪些基礎呢?
Android系統是基於linux為核心的,而linux是用c語言和少量匯編語言寫成的,如果你想研究android,就去學c語言吧。現在大學裡面和計算機相關的專業甚至理工類專業一般都會開設C語言課程,只是很多同學在大學期間並沒有好好學習,如果對它掌握的不太好或者很久沒用了,建議先從將其好好復習一下,將其基本的語法再好好回顧一下,最好能搭建一個環境來運行、調試它。如果沒有學過,不妨也提前學習一下。
如果是想學習Android應用開發,就去具備一定的java基礎。因為Android上的應用大多是用java編寫的,如果你想編寫手機游戲和應用 ,就需要學習java。Android應用程序開發是以Java語言為基礎的,所以沒有扎實的Java基礎知識,只是機械的照抄別人的代碼,是沒有任何意義的。 建議在安卓課程前期的java學習階段中,需要用心的學好。
望採納,謝謝