Android基礎知識總結


Android四大組件

1、Activity

a、Activity是指與用戶交互的界面。

b、一個Activity通常就是一個單獨的屏幕(窗口)。

c、Activity之間通過Intent傳遞數據。

2、service

a、service在后台運行,沒有圖形界面。

b、service的啟動方式有兩種:startService,是由其它組件調用startService方式啟動的,當服務處於started狀態時,與其它組件的生命周期沒有聯系了,即使其它組件銷毀了服務依然處在運行的狀態,因此,在服務完成任務后需要調用stopService()或者sotpself()方法停止。 bindService,調用者與服務綁定在一起,一旦調用者銷毀,服務也跟着銷毀。

c、service需要在AndroidManifest中聲明,使用<service android:name=".MyService"></service>

3、BroadcastReceiver

a、使用它對你應用外部的事件經行過濾,只對感興趣的外部事件(如當電話呼入、數據網絡可用時)接收時做出響應。

b、廣播接收器也沒有用戶界面。它們可以啟動一個activity、serice或NotificationManager來響應它們收到的信息.

c、廣播接收者的注冊方式有兩種,一種是靜態注冊,在AndroidManifast中使用

<receiver android:name=".MyBroadcastReceiver">

 <intent-filter>

   <action android:name="test"/>

 </intent-filter>  

</receiver>

另一種是動態注冊,

MyBroadcaetReceiver broad=new MyBroadcastReceiver();

IntentFilter intentfilter=new IntentFilter();

intentfilter.addAction(ACTION);

registerReceiver(broad);

4、ContentProvider

a、android平台提供了contentProvider使一個應用程序的指定數據集提供給其它應用程序。其它應用程序可以用ContentResolver類從該內容中獲取數據。

b、只有需要在多個應用程序之間共享的數據時才需要ContentProvider.

c、ContentProvider用於保存或獲取數據,並使其對所有應用程序可見。這是不同應用程序之間數據共享的唯一方式。

d、ContentProvider使用URL來標識數據集,這里的URL是唯一的,以content://作為前綴,表示該數據由ContentProvider來管理。

Android中常用的布局

1.LinearLayout線性布局

LinearLayout容器中的組件一個挨一個排列,通過Android:orientation屬性控制各個組件是橫向還是縱向排列。

2.FrameLayout幀布局

FrameLayout直接繼承ViewGroup組件。幀布局為每一個加入其中的組件創建一個空白區域,每個子組件占據一幀,這些幀根據gravity屬性執行自動對齊。

3、RelativeLayout相對布局

為了控制該布局內容的各個組件分布,RelativeLayout提供的一個內部類RelativeLayout.LayoutParams。

4、TableLayout表格布局

TableLayout繼承自LinearLayout,本質上仍然是線性布局管理器.表格布局采用行、列的形式來管理UI組件,並不需要明確的聲明包含多少行,多少列,而是通過添加TableRow、其它組件來控制表格的行數和列數。每向TableLayout中添加一個TableRow就代表一行,每向TableRow中添加一個組件就代表一列。

5、Android4.0新增的網格布局GridLayout

GridLayout是Android4.0增加的網格布局控件,與TableLayout有些相似,它把整個容器划分為rows*columns個網格,每個網格可以放置一個組件。比TableLayout性能好。

6、AbsoluteLayout絕對布局

AbsoluteLayout是由開發人員通過X、Y坐標來控制組件的位置。每個組件都可以指定layout_x;layout_y;

JSON/XML數據解析

XML

 通過InputStream獲取流的方式解析

InputStream is=connent.getInputStream();

XmlPullParser pullparser=Xml.newPullParser();

pullparser.setInput(is,"utf-8");

int type=pullparser.getEventType();

while(type!=XmlPullParser.END_DOCUMENT){

          swith(type){

               case XmlPullParser.START_TAG:

                     String name=pullparser.getName();

                    if("student".equals(name)){

                          String  str= pullparser.getAttrbuteName(0);

                             }else if("sname".equals(name)){

                             String sname=pullparser.nextText();

                              }

               break;     

            case XmlPullParser.END_TAG:

                     break;           

}

       type=pullparser.next();

}

is.close();

JSON解析

InputStream is=connection.getInputStream();

int len=0;

byte[] buf= new byte[1024];

StringBuffer sb=new StringBuffer(); 

while ((len=is.read(buf))!=-1){ 

                  String s=new String(buf,0,len);

                  sb.append(s);

}

BigObject bigObject=JSON.parseObject(sb.toString(),BigObject.class); 

int count=bigObject.getCount();

Log.i("test",count+"");

 List<Student> stuList=bigObject.getStudents(); 

         for (Student sss : stuList) {

                 Log.i("test",sss.getSname()+" "+sss.getSsex());

          }

    Android的數據存儲方式   

1、SharedPreferences方式     

   SharedPreferences用來存儲一些簡單的數據,以鍵值對的方式存儲數據。       

2、數據庫SQLite

     SQLite是Android所帶的一個標准的數據庫,支持SQL語句,是一個輕量級的嵌入式數據庫。

3、網絡存儲

  以POST請求方式把數據發送到某一個地址上

4、文件存儲

    在Android中,提供了openFileInput和openFileOutput方法讀取設備上的文件,

             FileOutputStream fos=openFileOutput("fileName",Contex.MODE_PRIVATE);

             FileInputStream   fls=openFileInput("fileName");

當FileOutputStream指定的文件不存在時,android會自動創建一個。默認情況下會覆蓋原來的文件。

5、ContentProvider         

Android內部唯一一個可以實現數據共享的方法。一個ContentProvider類實現了一組標准的方法接口,從而能讓其它應用讀取。外部的程序通過ContentResolute接口訪問ContentProivder提供的數據。

Handler機制、原理              

handler機制是更新UI界面的機制,可以接收消息也可以發送消息。

handler的原理:handler封裝消息的發送;Looper 消息封裝的載體,內部包含一個MessageQueue,所有的handler發送的消息都走向這個消息隊列,Looper.looper方法,就是一個死循環,不斷的從MessageQueue中讀取消息,如果有消息就處理消息,沒有就阻塞;handler負責發送消息,Looper負責接收消息,並把消息傳回handler。MessageQueue存儲消息的容器。

Android圖片的二次采樣以及緩存機制

1、二次采樣

a、用BitmapFactory解碼圖片時,有時候會失敗。這可能是由於圖片過大造成的。因此,需要分配更少的內存空間來存儲。BitmapFactory.decodeFile(imageFile);

b、BitmapFactory.Options.inSimpleSize 設置恰當的inSimpleSize可以使BitmapFactory分配更少的空間以消除錯誤。

c、BitmapFactory.Options提供inJustDecodeBounds屬性,inJustDecodeBounds設置位true后,decodeFile就不會分配空間,但可以計算出原始圖片的長度和寬度。即可得到一個恰當的inSampleSize。緩存機制,讀取:內存--強引用--軟引用--文件--網絡。詳見https://www.cnblogs.com/RabbitLx/p/5792268.html;

Android自定義View的設計和使用

1、首先繼承View類

2、必須實現其中的一個構造方法,一般都是實現兩個;

3、重寫onDraw(canvas)方法進行繪制,畫線,畫圓,畫矩形等;

4、重寫onMesure(),調整大小,默認是全屏;

5、如需樣式在xml中布置,自定義屬性 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM