android 面試知識點

瓜瓜東西發表於2014-03-26


1 android 網路通訊介面

 Java.net

Org.apache.http

Android.net.http

2 客戶端開發

3 json解析

1.首先整個當一個json串,並且最後補一個}構成完整json
String json = ... ;//
把這個長串放到json裡去,怎麼get過來你自己的事
2.
然後轉化為jsonObject
JSONObject mJSONObject = new JSONObject(json);
3.
取陣列
ArrayList msgs = mJSONObject.getArraylist("ActiveMsgs");
然後就可以了...需要的話強轉為ArrayList<Integer>

4 xml解析

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import org.xmlpull.v1.XmlSerializer;

 

import com.eboy.domain.Person;

 

import android.util.Xml;

 

public class PersonService {

   public static List<Person> getPersons(InputStream xml) throwsException {       

       List<Person> persons = null;

       Person person = null;

       XmlPullParser pullParser = Xml.newPullParser();

       pullParser.setInput(xml, "UTF-8"); //為Pull直譯器設定要解析的XML資料       

       int event = pullParser.getEventType();

       

       while (event != XmlPullParser.END_DOCUMENT){

           

           switch (event) {

           

           case XmlPullParser.START_DOCUMENT:

                persons = newArrayList<Person>();               

                break;   

           case XmlPullParser.START_TAG:   

               if("person".equals(pullParser.getName())){

                    int id =Integer.valueOf(pullParser.getAttributeValue(0));

                    person = new Person();

                    person.setId(id);

                }

                if("name".equals(pullParser.getName())){

                    String name =pullParser.nextText();

                    person.setName(name);

                }                               

                if("age".equals(pullParser.getName())){

                    int age =Integer.valueOf(pullParser.nextText());

                    person.setAge(age);

                }

                break;

               

           case XmlPullParser.END_TAG:

                if("person".equals(pullParser.getName())){

                    persons.add(person);

                    person = null;

                }

                break;

               

           }

           

           event = pullParser.next();

       }

       

       

       return persons;

    }

   

   /**

    * 儲存資料到xml檔案中

    * @param persons

    * @param out

    * @throws Exception

    */

   public static void save(List<Person> persons, OutputStream out)throws Exception {

       XmlSerializer serializer = Xml.newSerializer();

       serializer.setOutput(out, "UTF-8");

       serializer.startDocument("UTF-8", true);

       serializer.startTag(null, "persons");       

       for (Person person : persons) {

           serializer.startTag(null, "person");           

           serializer.attribute(null, "id",person.getId().toString());           

           serializer.startTag(null, "name");           

           serializer.text(person.getName().toString());

           serializer.endTag(null,"name");           

           serializer.startTag(null, "age");           

           serializer.text(person.getAge().toString());

           serializer.endTag(null, "age");           

           serializer.endTag(null, "person");

       }       

       serializer.endTag(null, "persons");

       serializer.endDocument();

       out.flush();

       out.close();

    }

}

5 android 訊息推送

實就是傳送到的意思。
所謂資訊推送,就是在網際網路上通過定期傳送使用者需要的資訊來減少資訊過載的一項新技術。推送技術通過自動傳送資訊給使用者,來減少用於網路上搜尋的時間。它根據使用者的興趣來搜尋、過濾資訊,並將其定期推給使用者,幫助使用者高效率地發掘有價值的資訊。不開也沒關係

6 Android中訊息推送有哪幾種方式

MQTT協議實現Android推送
RSMB實現推送
XMPP協議實現Android推送

7 android訊息推送GCM、XMPP、MQTT三種方案的優劣,越仔細越好,有具體分析更好!

Android推送方案分析MQTT/XMPP/GCM
蝸牛TT 釋出於 4個月前,共有 11 條評論
本文主旨在於,對目前Android平臺上最主流的幾種訊息推送方案進行分析和對比,比較客觀地反映出這些推送方案的優缺點,幫助大家選擇最合適的實施方案 
方案1、使用GCM服務(Google Cloud Messaging
簡介:Google推出的雲訊息服務,即第二代的G2DM
優點:Google提供的服務、原生、簡單,無需實現和部署服務端
缺點:Android版本限制(必須大於2.2版本),該服務在國內不夠穩定、需要使用者繫結Google帳號,受限於Google
 
方案2、使用XMPP協議(Openfire + Spark + Smack
簡介:基於XML協議的通訊協議,前身是Jabber,目前已由IETF國際標準化組織完成了標準化工作
優點:協議成熟、強大、可擴充套件性強、目前主要應用於許多聊天系統中,且已有開源Java版的開發例項androidpn
缺點:協議較複雜、冗餘(基於XML)、費流量、費電,部署硬體成本高。
 
方案3、使用MQTT協議(更多資訊見:http://mqtt.org/
簡介:輕量級的、基於代理的釋出/訂閱模式的訊息傳輸協議
優點:協議簡潔、小巧、可擴充套件性強、省流量、省電,目前已經應用到企業領域(參考:http://mqtt.org/software),且已有C++版的服務端元件rsmb
缺點:不夠成熟、實現較複雜、服務端元件rsmb開源,部署硬體成本較高。
 
方案4、使用HTTP輪循方式
簡介:定時向HTTP服務端介面(Web Service API)獲取最新訊息。
優點:實現簡單、可控性強,部署硬體成本低。
缺點:實時性差。
 
對各個方案的優缺點的研究和對比,推薦使用MQTT協議的方案進行實現,主要原因是:MQTT最快速,也最省流量(固定頭長度僅為2位元組),且極易擴充套件,適合二次開發。接下來,我們就來分析使用MQTT方案進行Android訊息的原理和方法,並架設自己的推送服務

如果還不明白的話,要看分析的話,給你個網址:http://m.oschina.net/blog/82059
自己看看。

8 Android有四大元件:Activity、Service、Broadcast Receiver、Content Provider

Activity :
應用程式中,一個Activity通常就是一個單獨的螢幕,它上面可以顯示一些控制元件也可以監聽並處理使用者的事件做出響應。
Activity之間通過Intent進行通訊。在Intent 的描述結構中,有兩個最重要的部分:動作和動作對應的資料。
BroadcastReceive廣播接收器:
你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者資料網路可用時)進行接收並做出響應。廣播接收器沒有使用者介面。然而,它們可以啟動一個activityserice 來響應它們收到的資訊,或者用NotificationManager 來通知使用者。通知可以用很多種方式來吸引使用者的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態列上放一個持久的圖示,使用者可以開啟它並獲取訊息。
Service 服務:
一個Service 是一段長生命週期的,沒有使用者介面的程式,可以用來開發如監控類程式。
比較好的一個例子就是一個正在從播放列表中播放歌曲的媒體播放器。在一個媒體播放器的應用中,應該會有多個activity,讓使用者可以選擇歌曲並播放歌曲。然而,音樂重放這個功能並沒有對應的activity,因為使用者當然會認為在導航到其它螢幕時音樂應該還在播放的。在這個例子中,媒體播放器這個activity 會使用Context.startService()來啟動一個service,從而可以在後臺保持音樂的播放。同時,系統也將保持這個service 一直執行,直到這個service 執行結束。另外,我們還可以通過使用Context.bindService()方法,連線到一個service 上(如果這個service 還沒有執行將啟動它)。當連線到一個service 之後,我們還可以service 提供的介面與它進行通訊。拿媒體播放器這個例子來說,我們還可以進行暫停、重播等操作。
Content Provider內容提供者 :
android平臺提供了Content Provider使一個應用程式的指定資料集提供給其他應用程式。這些資料可以儲存在檔案系統中、在一個SQLite資料庫、或以任何其他合理的方式,
其他應用可以通過ContentResolver(ContentProviderAccessApp例子)從該內容提供者中獲取或存入資料.(相當於在應用外包了一層殼),
只有需要在多個應用程式間共享資料是才需要內容提供者。例如,通訊錄資料被多個應用程式使用,且必須儲存在一個內容提供者中
它的好處:統一資料訪問方式。

 


相關文章