android開發後台服務
1. 安卓APP數據後台怎麼開發
你先考慮這些問題,解決這些問題,推薦使用PHP語言開發後台
1.打算採用雲數據來(如阿里雲)進行MySQL資料庫伺服器的搭建,在進行這方面開發需要學什麼語言?SQL語言和PHP語言需不需要學?
2.APP與資料庫的通信可以採用什麼通信服務?
3.後台數據採集硬體怎麼把數據上傳到該資料庫?
2. Android開發中怎麼在後台服務中監聽訊飛輸入法的莫得鍵盤的顯示和隱藏
摘要 1. 通過ImputMethodManager 獲取輸入法的打開/關閉狀態
3. 有做安卓後台服務端的哥們嗎問你們個問題
剛好本科畢業設計是做一個Android即時聊天應用-EasyIM。感謝題主的這個問題,讓我有動力整理下畢業設計的代碼。
因為實習佔用了大四的大部分時間,導致EasyIM只完成了部分功能便參與答辯。雖然最終僥幸過了畢設答辯,但效果與自己期望的相去甚遠。
開始工作後,有比較多的空閑時間,我打算慢慢完善該項目,並將近期所學習的一些新技術應用到該項目中。
該項目分為兩部分:
EasyIM-Server : EasyIM服務端
EasyIM-Android : EasyIM Android端
用戶基礎功能(登錄/注冊)
好友功能(添加/刪除好友)
點對點的消息發送功能(文本消息/圖文消息)
離線消息功能(獲取離線時收到的消息,消息的接收/已讀回執)
XMPP是PC時代的產物,其底層通訊的數據格式的XML,數據冗餘性太高(約70%),比較耗流量,並且在復雜的移動網路環境下會遇到各種各樣的問題。不過勝在擁有比較多的開發資料以及Openfire(底層是基於XMPP)這樣一個成熟的即時聊天框架。
MQTT協議較之XMPP更為輕量級,其連接的建立與傳輸的開銷都非常小,非常精簡,非常適合大量節點在弱網路環境的場景,發布/訂閱的模式也比較易於擴展。
fusesource/mqtt-client
dobermai/android-mqtt-push
mqttjs/MQTT.js
EasyIM目前實現了:
實現思路
我們先來聊聊具體實現的思路
基礎協議
因為移動設備多變的網路環境,以及即時通訊應用實時在線的需求,簡單地使用Scoket建立客戶端與服務端,或者客戶端與客戶端的通信是行不通的。
當前普遍的做法是在服務端與客戶端之間建立一個長連接,客戶端A將消息發送給服務端,服務端再將消息轉發給客戶端B。
而如何建立一個長連接實現客戶端與服務端的通信,以及保證連接的質量與低耗電,低耗流量是一個難題。這里就要扯上XMPP,MQTT這兩個協議。
很明顯, 我們需要選擇MQTT作為我們這個即時通信應用的基礎協議,關於MQTT客戶端與服務端的開源實現有:
比較遺憾的是,因為畢業設計是在太趕,我並沒有自己實現(實現難度也挺大的),而是使用了第三方的推送服務。
服務端實現
整個服務端實現比較簡單,因為整個項目採用重客戶端-輕服務端的開發策略,所以服務端的邏輯非常少,總共就4張表,12個介面。使用Restful風格的API。
用戶模塊,好友模塊比較簡單,無外就是增刪查改。
值得一提的是消息模塊,我將整個系統的各種功能事件,抽象成為"消息事件「, 比如,添加好友是一條消息,確認添加好友也是一條消息, 發送文本是一條文本消息,發送圖文是圖文消息。服務端只負責將該消息轉發給指定客戶端,而不關注消息是什麼類型。而客戶端接收到消息並根據消息類型進行其他邏輯操作。
4. android開發,怎樣才能讓後台服務不被各種一鍵清理關掉
1、在配置文件AndroidManifest.xml應用的application節點添加android:persistent=」true」,保證該應用程序所在進程不會被LMK殺死。提高軟體運行的優先順序。註:只設置android:persistent=」true」仍然會被殺死的情況。
2、在activity的 onStop()執行時,啟用一個像素的懸浮窗防止應用被清理,代碼如下:
java">Buttonbutton=newButton(getApplicationContext());
WindowManagerwm=(WindowManager)getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParamswmParams=newWindowManager.LayoutParams();
/**
*以下都是WindowManager.LayoutParams的相關屬性具體用途請參考SDK文檔
*/
wmParams.type=LayoutParams.TYPE_PHONE;//這里是關鍵,你也可以試試2003
wmParams.format=PixelFormat.RGBA_8888;//設置圖片格式,效果為背景透明
/**
*這里的flags也很關鍵代碼實際是wmParams.flags|=FLAG_NOT_FOCUSABLE;
*40的由來是wmParams的默認屬性(32)+FLAG_NOT_FOCUSABLE(8)
*/
wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL
|LayoutParams.FLAG_NOT_FOCUSABLE
|LayoutParams.FLAG_NOT_TOUCHABLE;
wmParams.width=1;
wmParams.height=1;
wm.addView(button,wmParams);//創建View
5. Android開發的後台屬於後端嗎,應該學習些什麼知識才能開發後台
後台屬於後端,包括資料庫和邏輯
6. 如何讓android的service一直在後台運行
1.把service和activity分開,讓service開機啟動。設置一個broadcastreceiver接受開機信號,使用RECEIVE_BOOT_COMPLETED的permission,然後啟動service。activity啟動後綁定到service上,通過ipc機制通信,acitivity結束後松綁。注意安裝後要手動啟動service,不會自動啟動,之後重啟手機後才會隨開機啟動。2.在內存低的時候系統會自動清理進程,這時候後台service可能會被殺掉。可以在onStartCommand中返回START_STICKY,這樣系統有足夠多資源的時候,就會重新開啟service。3.以上不需要NDK,直接用SDK開發就可以了。Android一直運行的後台服務是不存在的,而且也不是最佳實踐,因為一直運行的後台服務會耗費大量系統資源,影響其他程序的響應從而影響到用戶體驗。可以考慮使用如下幾種方案來達到一直運行的效果。1.調用startForeground方法,android:.使用AlarmManager發送定時任務:DiamondsAreForever.ServicesAreNot.我現在也遇到這個問題,我想樓主之所以出現這個問題的原因是,你在Activitiy中創建的Service運行在當前進程中,當你把這個Activitiy的進程殺掉之後,自然這個服務也就停止了。所以我的建議是在startService的時候,讓這個Service運行在與該Activity不同的進程中(可以startService或者開機時創建一個新的進程)。實際上就是Linux裡面的進程操作。可以使用NDK開發,用C或者C++新建一個進程來運行自己的服務,並提高進程優先順序,避免被清理掉(我猜測 和 的推送服務,或許是這么實現的)。有一種做法是開兩個進程來相互監督,一旦其中一個進程被停止,另一個檢測到後,立即或稍後重啟另一個進程。這里可以效仿這種做法。可以開兩個進程,一個用來做前台,另一個負責運行服務,後者沒有activity,由前者初始化並啟動,這樣,當前台進程被關閉時,服務並不被關閉
7. 安卓開發app,後台需要什麼技術
說難確實很難,說簡單也很簡單。
難:比如簡單的注冊,手機注冊?郵箱注冊?驗證碼總要有吧,那幾涉及第三方的信息發送。還有注冊登錄,必須得有找回密碼功能吧,又是一堆。
做個APP包含:安卓版、蘋果版、管理後台、手機助手、伺服器部署,這幾個東西語言都不一樣,得一個一個開發。所以費用十萬起步,周期2個月左右。
簡單:找HiShop開發,不需要編程,自己隨便搞搞就能做一個。
類似58同城、京東、天貓、美團等的電商、商城、同城服務APP,今日頭條、社交、貼吧等上面都有模板。不需要編程技術,自己就可以搞定。而且這些模板不是死的,都可以修改。
HIShop支持五合一自動生成,安卓版APP、蘋果版APP、管理後台、手機管理助手、伺服器,自動配置生成,不用逐一開發,資金成本、時間成本的節省可想而知。所以費用不到一萬。
費用不到外包價的10%,周期也短。
鏈接如下,題主自己去看吧:
8. android編程如何讓程序後台運行
通過android的四大組件之一的service來實現後台運行,類似Windows上的服務。
1、Android上的service有兩種啟動方式(或者說兩種方法實現service)
①startService()和bindService() ,有區別。
2、簡單的使用Service步驟(startService()):
①建立service的子類,重寫onStartCommand()。(當服務啟動的時候會調用該方法)
{
@Override
publicvoidonCreate(){
}
//這個函數在低版本中使用的是onStart(),onStart()在高版本中已經過時了。
@Override
publicintonStartCommand(Intentintent,intflags,intstartId){
}
@Override
publicvoidonDestroy(){
}
}
②在清單文件中聲明Service組件
<application>
<serviceandroid:name="HelloService">
<intent-fiter>
<actionandroid:name="xxxxx">
</intent-fiter>
</service>
</application>
③在Activity等調用startService(intent);啟動你的Service
Intentintent=newIntent("xxxxx");
//還可以使用Intentintent=newIntent(activity.this,HelloService.class);
startService(intent);
註:兩種方法各有不同,具體請看官方API:
http://developer.android.com/guide/components/services.html
9. android 怎樣啟動後台服務
後台服務就是後台運行的意思,只要單擊任務欄上代表這程序的按鈕,原來後台運行的程序就會到前台來,前台運行的程序就會到後台去了。如下圖所示。
Windows 7可以打開幾個窗口,每個任務分配一個窗口,各個窗口可以重疊、排開、放大、縮小、移動等,可以方便地在各打開的窗口間切換,各個打開的應用程序共享電腦資源,多任務環境對用戶是透明的,每個任務都可以按前台、後台和獨佔三種方式進行。
多任務並存時,打開一個窗口後,在任務欄的空白處單擊滑鼠右鍵,然後在彈出的快捷菜單中可以選擇層疊、橫向平鋪或縱向平鋪等。
當Windows 7打開了幾個窗口時,實際上只有一個是你可以對它進行操作的窗口,叫做當前活動窗口。在所有打開窗口的最前面,標題欄底色為深色的窗口為當前活動窗口。單擊任務欄上的按鈕,或按下換檔鍵加製表鍵,即可以把這個窗口切換為當前活動窗口。
任何已經打開,不在前台運行的窗口,在後台仍然是活動的,佔用內存和中央處理器等系統資源,所以,從這個意義上來說,長時間不用的窗口要及時關閉,方法是單擊應用程序窗口標題欄右上角的關閉按鈕。
;一個應用程序,無論是否最小化,在任務欄上都會以按鈕的形式顯示出來,當前活動窗口的應用程序的按鈕呈凹陷形狀,其餘呈隆起形狀。因此,判斷一個窗口是否關閉,只要看其是否還在任務欄中即可。
10. android後台服務保持,不被殺死
作者:閉關寫代碼
鏈接:https://www.hu.com/question/29826231/answer/71207109
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
強烈建議不要這么做,不僅僅從用戶角度考慮,作為Android開發者也有責任去維護Android的生態環境。現在很多Android開發工程師,主力機居然是iPhone而不是Android設備,感到相當悲哀。
從技術角度概括一下現在普遍的防殺方法
Service設置成START_STICKY,kill 後會被重啟(等待5秒左右),重傳Intent,保持與重啟前一樣
通過 startForeground將進程設置為前台進程,做前台服務,優先順序和前台應用一個級別,除非在系統內存非常缺,否則此進程不會被 kill
雙進程Service:讓2個進程互相保護,其中一個Service被清理後,另外沒被清理的進程可以立即重啟進程
QQ黑科技:在應用退到後台後,另起一個只有 1 像素的頁面停留在桌面上,讓自己保持前台狀態,保護自己不被後台清理工具殺死
在已經root的設備下,修改相應的許可權文件,將App偽裝成系統級的應用(Android4.0系列的一個漏洞,已經確認可行)
Android系統中當前進程(Process)fork出來的子進程,被系統認為是兩個不同的進程。當父進程被殺死的時候,子進程仍然可以存活,並不受影響。鑒於目前提到的在Android-Service層做雙守護都會失敗,我們可以fork出c進程,多進程守護。死循環在那檢查是否還存在,具體的思路如下(Android5.0以下可行)
用C編寫守護進程(即子進程),守護進程做的事情就是循環檢查目標進程是否存在,不存在則啟動它。
在NDK環境中將1中編寫的C代碼編譯打包成可執行文件(BUILD_EXECUTABLE)。
主進程啟動時將守護進程放入私有目錄下,賦予可執行許可權,啟動它即可。
聯系廠商,加入白名單
------------------------------------------------------
TIP: 面對各種流氓軟體後台常駐問題,建議使用「綠色守護」來解決,可是殺掉那些第三方清理工具難以清除的後台程序