1、android上的服務(wù)器分兩種:
成都創(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ù),10年袁州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
① 用 java 寫的,這種比較簡單,但是需要注意的它的代碼已經(jīng)被轉(zhuǎn)換成了大端了,pc上用c++寫傳結(jié)構(gòu)體;
② 用 c/c++ 寫的,這種方式進(jìn)行和pc上的通信比較的方便,客戶端和服務(wù)器段可以都通過結(jié)構(gòu)來傳遞,唯一需要考慮的是字節(jié)對其的問題,可以用兩個預(yù)處理指令(可以跨平臺的)處理;
2、源碼的話,我雖然有但是屬于公司的項目代碼,不方便的;
我是ndk吧的吧主,希望大家關(guān)注一下ndk吧,有問題的話也可以到里面留言哦,ndk吧的鏈接:
謝謝!
Android應(yīng)用的服務(wù)器端是可以用C#寫的:
1、C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NET Framework之上的高級程序設(shè)計語言。并定于在微軟職業(yè)開發(fā)者論壇(PDC)上登臺亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司 .NET windows網(wǎng)絡(luò)框架的主角。
2、C#是一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它在繼承C和C++強大功能的同時去掉了一些它們的復(fù)雜特性(例如沒有宏以及不允許多重繼承)。C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。
3、C#是面向?qū)ο蟮木幊陶Z言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應(yīng)用程序,MICROSOFT .NET提供了一系列的工具和服務(wù)來最大程度地開發(fā)利用計算與通訊領(lǐng)域。
4、C#使得C++程序員可以高效的開發(fā)程序,且因可調(diào)用由 C/C++ 編寫的本機(jī)原生函數(shù),因此絕不損失C/C++原有的強大的功能。因為這種繼承關(guān)系,C#與C/C++具有極大的相似性,熟悉類似語言的開發(fā)者可以很快的轉(zhuǎn)向C#。
1、要進(jìn)行創(chuàng)建AIDL的接口之前,需要進(jìn)行選中當(dāng)前的項目的文件中,選中完成項目之后。2、然后進(jìn)行點擊Android studio菜單中的“file”的選項,就會彈出了一個下拉的菜單中“new”選項。3、就會彈出了一個下一級的菜單中,進(jìn)行選擇下一級菜單中的“AIDL”的選項。 4、就會彈出了一個菜單中,進(jìn)行點擊這個菜單中的“AIDL FILE”的選項?!?5、就會彈出了一個AIDL的窗口的選項,需要給接口進(jìn)行添加名稱,在interface name的輸入框中進(jìn)行輸入名稱,點擊”finish“的選項?!?、然后在項目中進(jìn)行天機(jī)了一個aidl的文件,在該文件下中,有一個aidl的后綴的文件,其實就是一個接口文件。
Android Framework包含三個內(nèi)容:服務(wù)端、客戶端、linux驅(qū)動
Android Framework服務(wù)端包括兩個很重要的類:WindowManagerService (WMS)、ActivityManagerService(AMS)
客戶端包含以下類:
Linux驅(qū)動和Framework相關(guān)的主要兩個部分:畫家SurfaceFlingeer和快遞員Binder
每一個窗口都對應(yīng)一個畫Surface,SF主要是把各個surface顯示到同一個屏幕,Binder則提供跨進(jìn)程間的消息傳遞
從APK程序的運行過程中看各個組件都在什么時候干什么樣的活
ActivityThread從main()函數(shù)中就開始動起來,然后調(diào)用PrepareMainLooper()為UI線程創(chuàng)建一個消息快遞通道即MessageQueue()
接著創(chuàng)建ActivityThread對象,創(chuàng)建過程會創(chuàng)建一個消息裝卸工Handler對象和一個快遞員Binder對象,其中Binder負(fù)責(zé)接收遠(yuǎn)程Ams的IPC調(diào)用,接收到調(diào)用后讓Handler把消息裝到消息隊列,UI線程很忙的都是異步的從消息隊列中取出消息并執(zhí)行相應(yīng)的操作,比如start,stop、pause
然后UI線程讓隊列調(diào)用Looper.loop()方法進(jìn)入消息循環(huán)體,進(jìn)入后就會不斷的從消息隊列中讀取并處理消息
當(dāng)ActivityThread接收到Ams發(fā)送start某個Activity的快遞后就會創(chuàng)建指定的Activity對象。Activity會先按窗戶再去按玻璃和貼窗花,所以先創(chuàng)建PhoneWindow-DecorView-創(chuàng)建相應(yīng)的View或ViewGroup。創(chuàng)建完成后就可以讓大家欣賞了,調(diào)用WindowManager把界面顯示到屏幕上,然后創(chuàng)建ViewRoot,然后調(diào)用Wms提供的遠(yuǎn)程接口添加一個窗口并顯示到屏幕上。
接下來就是用戶的操作,事件線程不斷的把消息快遞發(fā)到事件隊列中去,然后事件分發(fā)線程秘書逐個取出消息,然后調(diào)用Wms中的相應(yīng)函數(shù)處理該消息。
2.UI線程是什么?
一直在傾聽用戶的心聲,所有的處理用戶消息,以及繪制頁面的工作都在該線程中完成
android客戶端不能直接與服務(wù)器數(shù)據(jù)庫連接,拿sqlserver來說,安裝之后有幾個G那么大,android程序是跑在手機(jī)上的,想讓程序直接訪問sqlserver,那手機(jī)需要非常大的內(nèi)存。但是可以通過webservice這樣一個橋梁來間接訪問SQLServer。
即在服務(wù)器運行一個服務(wù)端程序,該服務(wù)端程序通過接收來自android客戶端的指令,對數(shù)據(jù)庫進(jìn)行操作??蛻舳伺c服務(wù)端直接的數(shù)據(jù)傳輸主要通過http協(xié)議發(fā)送和接收json數(shù)據(jù)或者xml數(shù)據(jù),服務(wù)端接收到客戶端的json數(shù)據(jù)之后,進(jìn)行json解析,再按一定的邏輯對數(shù)據(jù)庫進(jìn)行增、刪、改、查??蛻舳说膆ttp請求可以通過 HttpClient類實現(xiàn),在anddroid 4.0之后,客戶端的網(wǎng)絡(luò)請求已經(jīng)不被允許在主線程中運行,所以題主還需注意另開啟一個子線程進(jìn)行網(wǎng)絡(luò)請求。
android客戶端和服務(wù)器端是基于IntentService的,具體如下:
1、后臺使用簡單的servlet,支持GET或POST。這個servlet最終返回給前臺一個字符串flag,值是true或false,表示登錄是否成功。
2、然后在安卓的ADT上創(chuàng)建一個安卓項目,建立兩個Activity,分別作為登錄界面和登錄成功界面。
3、HTTP的訪問公共類,用于處理GET和POST請求。
4、IntentService服務(wù),用于在后臺以隊列方式處理耗時操作。
5、在AndroidManifest.xml中注冊IntentService。注意uses-permission節(jié)點,為程序開啟訪問網(wǎng)絡(luò)的權(quán)限。
6、登陸界面處理,注意按鈕監(jiān)聽事件中,使用Intent將要傳遞的值傳給service。接收廣播類中,同樣使用Intent將要傳遞的值傳給下一個Activity。在onCreate()中,動態(tài)注冊接收廣播類的實例receiver。在接收廣播類中,不要使用完畢后忘記注銷接收器,否則會報一個Are you missing a call to unregisterReceiver()? 的異常。