1. 程式人生 > >Android的執行緒

Android的執行緒

案例一:訊息提示框

  1. Toast(吐絲框)
    1.1 Toast是Android中的一種簡易的訊息提示框
    1.2 使用這個類的最簡單的方法是呼叫靜態方法構造您所需要的一切,並返回一個新的Toast物件。
    Toast toast=Toast.makeText(getApplicationContext(), “預設的Toast”, Toast.LENGTH_SHORT);
    toast.show();
    第一個引數:當前的上下文環境。可用getApplicationContext()或this
    第二個引數:要顯示的字串。也可是R.string中字串ID
    第三個引數:顯示的時間長短。Toast預設的有兩個LENGTH_LONG(長)和LENGTH_SHORT(短),也可以使用毫秒如2000ms

  2. ImageView
    2.0 注意事項:res下面的資源名不能使用大寫字母,特別是圖片資源中的圖片的檔名,會造成R.java檔案丟失,改正確後即可
    例如:smallImage.png錯誤,small_image.png正確

2.1 scaleType(縮放型別)
scaleType的屬性值有:matrix fitXY fitStart fitCenter fitEnd center centerCrop centerInside

            (擴大或縮小至)
    圖片寬度--------------->控制元件寬度        

它們之間的區別如下:
matrix 用矩陣來繪製(從左上角起始的矩陣區域)

fitXY  不按比例縮放圖片,目標是把整個圖片塞滿整個View

fitStart  把圖片按比例擴大或縮小到View的[[[寬度]]],然後置頂部顯示(圖片會完整顯示)

fitCenter  把圖片按比例擴大或縮小到View的[[[寬度]]],然後居中顯示(圖片會完整顯示)

fitEnd   把圖片按比例擴大或縮小到View的[[[寬度]]],然後置底部顯示(圖片會完整顯示)

center  不縮放,將圖片按原來大小居中顯示,當圖片寬高超過View的寬高時,則擷取圖片的居中部分顯示
	 
centerCrop  按比例擴大(或縮小)圖片的size居中顯示,使得圖片的長寬的[[[等於或大於]]]View的長寬
	 
centerInside  按比例擴大(或縮小)圖片的size居中顯示,使得圖片的長寬的[[[等於或小於]]]View的長寬 (圖片會完整顯示)

    用得最多還是fitXY fitStart fitCenter fitEnd
    預設是fitCenter

  scaleType屬性分二種情況分析
  1.1.1 圖片比ImageView小(android08_widget03_d01_v1)
        <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginRight="10dp"
        android:background="#FF0000"
        android:scaleType="matrix"
        android:src="@drawable/small_image" />

在這裡插入圖片描述

  1.1.2 圖片比ImageView大(android08_widget03_d01_v2)

在這裡插入圖片描述

  1. 進度條 ProgressBar
    3.1 常用屬性
    style="?android:attr/progressBarStyleHorizontal" 預設為圓形
    android:progress=“33”
    android:max=“100”

    執行緒休眠
    Thread.sleep(100);//拋異常
    SystemClock.sleep(100);//不會拋異常

3.2 執行緒注意事項:
不能在主執行緒中執行耗時的操作,只能在子執行緒中操作
另外,在子執行緒中不能操作主執行緒中的控制元件(ProgressBar除外)
private class MyThread extends Thread{

 SubThread->MainThread    錯誤

3.3 Handler(重點、面試問得比較多)
用於執行緒之間的通訊,比如:主執行緒與子執行緒
private Handler myHandler = new Handler(){

3.4 執行緒小結
SubThread->MainThread 錯誤
SubThread->Handler->MainThread 正確

  核心:
  1、toast彈框
  2、imageview
  3、進度條
  4、子執行緒訪問主執行緒(執行緒中的通訊handler)

一、Android執行緒的定義和特點

1.什麼是執行緒:

    執行緒是一種輕量級程序,大多數情況下用於執行非同步操作。在一個Android 程式開始執行的時候,會單獨啟動一個程序,同時會產生一個UIThread執行緒(main執行緒)。一個Android 程式預設情況下也只有一個Process,但一個Process下卻可以有許多個Thread。

2.執行緒與程序的區別:

    (1)地址空間:程序內的一個執行單元;程序至少有一個執行緒;它們共享程序的地址空間;而程序有自己獨立的地址空間;
    (2)資源擁有:程序是資源分配和擁有的單位,同一個程序內的執行緒共享程序的資源
    (3)執行緒是處理器排程的基本單位,但程序不是.
     (4)執行緒只需要很少的資源就可“輕裝上陣”執行的優點,來彌補程序併發的“顆粒度”粗糙的缺點,提高系統資源(如:CPU,記憶體——又可分為資料區,堆疊區等等,和IO匯流排控制權……)利用率。

二、為什麼要用執行緒?
1.用於非同步操作。
2.預設的情況下,Service和Activity(還有Content Provider和Broadcast Receiver)會同時執行在程序的main執行緒中,是會相互阻塞的。因此要在服務中執行長時間的操作(如網路應用)時,還是要自己建立執行緒來操作。

//瞭解執行緒和程序的學習部落格路徑
原文:https://blog.csdn.net/qq979418391/article/details/50541861