1. 程式人生 > >徐鬆亮android教學-雜項筆記

徐鬆亮android教學-雜項筆記

既然叫雜項筆記,就是說雜亂無章的筆記,此筆記的主要目的不是為了教學,而是用於本人學習過程中的點滴記錄,之所以開放,就是希望能給新手及愛好者些許點滴概念性幫助。

目錄

4, APK

 單位

 手機解析度

23,註釋

File

啟動執行緒

1,開發環境搭建:

  • Android Studio+JDK
    • Android Studio下載
      • http://www.android-studio.org/
    • JDK下載:
      • http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    • 版本管理
      • GIT下載:https://git-scm.com/download/win,並註冊
      • 在Android配置GitHub:Android Studio---File---Settings---Version Control---GitHub
      • 配置Git安裝路徑:Android Studio---File---Settings---Version Control---Git
      • 上傳專案:Android Studio---VCS---import into Version control---Share project on GitHub

2,模擬器:Genymotion

  • 下載地址    http://genymotion.en.softonic.com/
  • 網站使用者名稱密碼:[email protected]/xxxxxx

3,手機開啟開發模式

  • 設定---關於手機---版本號 連續點選即可使能顯示開發者配置
  • 設定---開發人員選項,使能下面專案
    • 開發人員選項 
    • USB除錯 
    • 監控ADB安裝應用 
    • 通過USB驗證應用 
    • 陽光下可讀性提升 
    • 使用舊版DHCP客戶端

4, APK

  • 安裝包,其實就是zip格式,解壓後是Dex檔案
  • Dex:Dalive VM executes

5,反編譯工具:

  • AndroidKiller_v1.3.1        
    • 包含了apktool、dex2jar、jd-gui等工具

6,Android Studio編譯C/C++

  • 安裝相關外掛(SDK Manager---SDK Tools)
    • NDK        能在Android上面使用C/C++程式碼工具集
    • Cmake    外部構建工具
    • LLDB        Android Studio上面除錯原生代碼的工匠

7,官方文件:

  • 需要翻牆訪問:https://developer.android.com/index.html

8,SDK包說明:

9,Android尺寸

  •  單位

    • 建議: sp用於文字大小單位。dp用於其他元素
    • px        畫素
    • in        英寸
    • mm        毫米
    • pt        磅    1/72英寸
    • dp        基於density抽象單位,在160點/英寸螢幕,1dp=1px
    • dip        等同於dp
    • sp        同dp相似,但會根據字型大小縮放    
  •  手機解析度

    • 4:3
      • VGA        640*480 (Video Graphics Array)     
      • QVGA        320*240 (Quarter VGA)         
      • HVGA        480*320 (Half-size VGA)         mdpi
      • SVGA        800*600 (Super VGA)             
    • 5:3
      • WVGA    800*480 (Wide VGA)                 hdpi
    • 16:9
      • FWVGA     854*480 (Full Wide VGA)        hdpi
      • HD        1920*1080 High Definition        
      • QHD        960*540                hdpi
      • 720p        1280*720    標清            xhdpi
      • 1080p        1920*1080    高清             xxhdpi

10,Android體系結構:分為如下5層

11,Android studio主題(霸氣黑主題)

  • file---set---Appearance---Theme--→Darcula

12,Android Studio顯示行號

  • file---set---Editor---General--- Appearance---Show line numbers

13,Android studio常用快捷鍵

  • Alt    +    Enter        自動糾錯提示,如自動匯入類等
  • Ctrl    +    左鍵        跳轉到定義處
  • shift    +    shift        查詢
  • Ctrl    +    N        快速開啟類
  • Ctrl+Shift+N            快速開啟檔案    
  • Ctrl    +    E        最近編輯的文件列表
  • Shift    +    單擊        關閉檔案
  • Ctrl    +    [ ]        跳到大括號頭尾
  • Ctrl+Shift+    Backspace    跳到上次編輯
  • Ctrl    +    F12        顯示當前檔案結構
  • Ctrl    +    F7        當前元素在當前檔案的引用 F3可選擇
  • Ctrl    +    /        註釋    取消註釋    //
  • Ctrl+Shift+    /        註釋    取消註釋    /**/
  • Ctrl    +    D        複製並貼上當前行
  • Ctrl+Alt+    L        格式化程式碼
  • Ctrl+Alt+    Backspace    程式碼提示
  • Ctrl+Shift+    F7        高亮顯
    • F3                跳轉下一個高亮處
    • ESC                取消高亮顯示
  • logt                生成TAG
  • logd                列印log.d()
  • loge                列印log.e()

14,Android studio配置SDK與JDK路徑

  • file---Other Settings---Default Project Structure

15,Android Studio的Project與Module概念

  • Project        工作空間(可以含有多個Module)
  • Module        具體專案

16, Android Studio的操作面板

  • Project面板(瀏覽專案檔案)
  • Build Variants面板(設定當前專案編譯引數:release/debug)
  • Android Monitor面板(監控除錯資訊)
  • 編輯區
  • Gradle面板(自動構建工具,Gradle任務列表,雙擊即可執行)

17,Android Studio的Project檔案列表說明

  • Project有多種顯示模式,我們以Android模式顯示。
  • Res資料夾介紹
    • drawable    待用的圖片檔案
    • layout        佈局檔案
    • mipmap    圖示檔案
    • values        存放多個*.xml檔案,包括各種配置/資料檔案。
      • dimens.xml    用於定義尺寸常量值。
      • strings.xml    用於定義字串常量值。
      • styles.xml    用於定義應用程式的style。

18,Android 的Activity模板

  • 專案右鍵new---Activity裡面包含眾多模板。

19,Android 的靜態分析工具Android StudioLint

  • 選單---Analyze---Inspect Code,能夠檢測潛在錯誤。
  • 在Analyze中還有很多分析工具有待於發掘。

20,Android Studio自動升級後項目卡在Gradle sync的解決方案

  • 開啟android studio專案目
    • gradle\wrapper\gradle-wrapper.properties這個檔案 
  • 按檔案中distributionUrl 對應的網址下載檔案
  • 將下載的zip檔案放到如下路徑,之後重啟工程
    • C:\Users\Administrator\.gradle\wrapper\dists\gradle-x.x-all\x\ 

21,常用檔案型別

  • 佈局檔案:activity_main.xml        (res/layout)        介面
  • 原始碼檔案:MainActivity.java        (java/…/)        實現介面互動
  • 配置檔案:AndroidManifest.xml    (manifests/)        全域性配置檔案
  • 樣式定義:styles.xml                (res/values/)    

22,基本屬性

  • 尺寸
    • match_parent    父控制元件匹配
    • fill_parent        與match_parent完全相同,但建議只在Android2.2版本以下使用。
    • wrap_content    全部內容擴充套件匹配

23,註釋

  • java    與C一樣
  • xml        
    • 單行註釋    <!-- 註釋 --> 
    • 多行註釋    <![CDATA[     多行註釋    ]]>

24,控制元件的觸發

  • 可以在xml配置裡面呼叫方法,但是因為不在java原始碼裡,讀取程式碼時不好找,所有部分程式設計師不這樣操作。
  • 在java中自己編寫觸發事件,這個比較常用。

25,將原有的eclipse工程檔案載入到Android studio

  • 加入頁面        xml檔案
  • 更新巨集定義        res-->values檔案
  • 更新圖片        res-→drawable
  • 編碼統一        用BCompare將編碼同意改為UTF-8
  • 新增配置        更新 AndroidManifest.xml

26,Android螢幕元素層次結構

  • android.view.View
    • AnalogClock(小部件 時鐘)
    • ImageView(圖片)
      • ImageButton
        • 1....1.    ZoomButton
      • QuickContactBadge
    • KeyboardView(鍵盤檢視)
    • ProgressBar(進度條)
    • TextView(文字,可超連結)
      • CheckedTextView
      • Button(按鈕)
        • 1....1.    CompoundButton
          • 1....1.1.    CheckBox
          • 1....1.2.    RadioButton
          • 1....1.3.    ToggleButton(有狀態按鈕)
      • Chronometer
      • DigitalClock
      • EditText(編輯文字,首寫字母大寫/數字/密碼/...)
        • 1....1.    AutoComplete TextView(自動補全)
          • 1....1.1.    MultAutoCompletTextView
        • 1....2.    ExtractEditText
    • SurfaceView(視訊播放-遊戲視訊)
    • ViewGroup(檢視容器)
      • AbsoluteLayout(絕對佈局)
        • 1....1.    WebView
      • KeyboardView
        • 1....1.    AbsListView
          • 1....1.1.    GridView
          • 1....1.2.    ListView
            • 1....1.2.1.    ExpandableListView
        • 1....2.    AbsSpinner
          • 1....2.1.    Gallery
          • 1....2.2.    Spinner
      • UnearLayoue
        • 1....1.    RadioGroup
        • 1....2.    TabWidget
        • 1....3.    TableLayout
        • 1....4.    TableRow
        • 1....5.    ZoomControls
      • RelativeLayout(相對佈局)
        • 1....1.    DialerFilter
        • 1....2.    TwolineListltem
      • SlidingDrawer(滑動式抽屜)
      • FrameLayout(層佈局)
        • 1....1.    DatePicker(日期控制元件)
        • 1....2.    TimePicker(時間控制元件)
        • 1....3.    GestureOverlayView
        • 1....4.    ViewAnimator
          • 1....4.1.    ViewFlipper
          • 1....4.2.    ViewSwitcher
            • 1....4.2.1.    ImageSwitcher
            • 1....4.2.2.    TextSwitcher
        • 1....5.    HorizontalScrollView
        • 1....6.    ScrollView
        • 1....7.    MediaController
        • 1....8.    TabHost
    • ViewStub(指定一個佈局,提高UI載入效能)

27,Android的主題

  • 在AndroidManifest.xml中設定
  • @android:style/Theme.Dialog    將一個Activity顯示為能話框模式
  • @android:style/Theme.NoTitleBar不顯示應用程式標題欄
  • @android:style/Theme.NoTitleBar.Fullscreen    不顯示應用程式標題欄,並全屏
  • Theme.Light            背景為白色
  • Theme.Light.NoTitleBar    白色背景並無標題欄
  • Theme.Light.NoTitleBar.Fullscreen    白色背景,無標題欄,全屏、
  • Theme.Black            背景黑色
  • Theme.Black.NoTitleBar    黑色背景並無標題欄
  • Theme.Black.NoTitleBar.Fullscreen    黑色背景,無標題欄,全屏
  • Theme.Wallpaper        用系統桌面為應用程式背景
  • Theme.Wallpaper.NoTitleBar        用系統桌面為應用程式背景,且無標題欄
  • Theme.Wallpaper.NoTitleBar.Fullscreen系統桌面為應用程式背景,無標題欄,全屏
  • Translucent            半透明
  • Theme.Translucent.NoTitleBar        半透明、無標題欄
  • Theme.Translucent.NoTitleBar.Fullscreen    半透明、無標題欄、全屏
  • android:theme="Theme.Panel"
  • android:theme="Theme.Light.Panel"

28,Android建立UI的3種方式

  • 在XML種建立
  • 在Activity類種建立
  • 混合使用動態建立和XML佈局建立(XSL主選)

29,Android常用控制元件

  • TextView
  • EditText
  • AutoCompleteTextView
  • MultiAutoCompleteTextView
  • Button
  • ImageView
  • ImageButton
  • ToggleButton(有狀態按鈕)
  • CheckBox
  • RadioButton、RadioGroup
  • DatePicker、TimePicker
  • ProgressBar
  • SeekBar(滑塊)
  • Spinner(下拉列表)
  • ListView(列表容器)、Grid(網格)

30,關於R類

  • 在編譯時會自動生成R類,為/res資料夾所有資源建立索引項
  • Java訪問語法:[<package_name>.]R.<resource_type>.<resource_name>
  • XML訪問語法:
    • @[<package_name>:]<resource_type>/<resource_name>

31,關於this

  • 當前物件的引用
  • 本類的成員變數

32,Android的兩種事件處理機制

  • 監聽機制
  • 回撥機制
  • 事件處理程式與事件偵聽器
    • onClick()            
      • OnClickListener()
    • onLongClick()      
      • OnLongClickListener()
    • onFocusChange()    
      • OnFocusChangeListener()
    • onKey()          
      • OnKeyListener()
    • onTouch()            
      • OnTouchListener()
    • onMenuItemClick()    
      • OnMenuItemClickListener()

33,Android的4大元件

  • Activites

    • 活動元件(對應窗體,使用者互動)
    • 顯示指定控制元件    setContentView(View)
    • 在AndroidManifest.xml中定義首先載入的元件
    • 切換/啟用
      • 普通切換方法(有去無回)        
        • 1....1.    startActivity(Intent)
      • 應答模式切換(有來有回)
        • 1....2.    A1-->A2:startActivityForResult(intent,0)
        • 1....3.    A2-→A1:setResult(RESULT_OK,intent)
        • 1....4.    A1接受方法:onActivityResult()
    • 4種狀態
      • Runing        執行狀態
      • Paused        暫停狀態
      •  Stoped        停止狀態
      • Killed            登出狀態
      • 程式設計師可以絕對Active的生,但是不能決定死,由Android棧自動管理。
    • 生命週期方法
      • onCreate()            建立
        • onStart()              開始
          • onResume()            恢復
          • onPause()            暫停
        • onStop()            停止
        • onRestart()            重啟動
      • onDestroy()            登出
  • Service                    

    • 概念:
      • 服務元件(後臺工作)
      • 生命週期
        • 呼叫startService 啟動:不隨啟動Activity的結束而停止。
        • 呼叫bindService 啟動:隨解綁或Activity的結束而停止。
    • 註冊
      • <service android:name=“.LocalService” />
    • 兩種啟動方式
      • Context.startService()    ---    Context.stopService()
      • Context.bindService()    ---    Context.unbindService()
    • 回掉方法
      • onStartCommand()
      • onBind()
      • onCreate()
      • onDestroy()
  • Broadcast Receivers

    • 廣播接收器
    • 傳送廣播(傳送Broadcast Intent)
      • 普通廣播    Context.sendBroadcast()
      • 有序廣播    Context.sendOrderBroadcast()
      • Context.sendStickBroadcast()
    • 生命週期:常駐/非常駐
    • 方法
      • onReceive()    不能處理耗時程式,幾秒沒執行完會出現ANR錯誤
        • ANR:Application No Response
    • 流程
      • 註冊receiver
        • 靜態註冊(常駐):在AndroidManifest.xml
        • 動態註冊(非常駐,跟隨程式的生命):在Java中
          • 在onStart()中註冊
          • 在onStop()中登出
      • 呼叫sendBroadcast()傳送廣播
      • 呼叫onReceive()處理廣播
      • 呼叫startService()方法啟動服務
      • 呼叫stopService()方法停止服務
  • ContentProviders        

    • 內容提供者(共享資料操作)
  • 元件間通訊(Intents框架)

    • 元件切換            Intent
    • 元件間資訊傳遞構成    
      • Action            動作
      • Data            動作資料
      • Category        一個類別字串
      • Type            型別
      • component        目標元件類名稱
      • extras            其他(如:Bundle)

34,Activity與Fragment(碎片)

  • Activity中融入Fragment是非常棒的。

35,Android除錯資訊列印---Log方法

  • Log類位於android.util包中,繼承自java.lang.Object類
  • 方法
    • Log.v    黑色    輸出任何訊息
    • Log.d    藍色    輸出debug故障日誌資訊
    • Log.i    綠色    輸出一般提示性訊息(Log.w    + Log.e)
    • Log.w    橙色    輸出warning警告日誌資訊(+Log.e)
    • Log.e    紅色    輸出錯誤資訊

36,Android訊息提示框---Toast

  • 不會獲得焦點,不能被單擊。
  • 根據設定時間自動消失
  • 引入包
    • import android.widget.Toast
  • 顯示提示內容:
    • Toast.makeText(物件,內容,時長).show();
  • 設定顯示位置:
    • toast.setGravity()
    • toast.setMargin()

37,Android對話方塊---AlertDialog

  • 建立:AlertDialog.Builder.create()

38,Android通知---Notofication

  • 匯入類
    • import android.app.PendingIntent;
    • import android.app.NotificationManager;
    • import android.app.Notification;
  • 步驟
    • 獲取NotificationManager 物件
    • 初始化Notification物件
    • 設定通知顯示引數
    • 傳送通知

39,Android異常

  • try{}catch(...){}
  • 常見異常
    • Exception            總異常(以下所有異常類的父類)
    • ClassCastException        型別轉換異常
    • ClassNotFoundException    未找到相應類異常
    • ArithmeticException    算術異常
    • ArrayIndexOutOfBoundsException    陣列下標越界異常
    • ArrayStoreException    陣列中包含不相容的值的異常
    • SQLException        操作資料庫異常類
    • NullPointerException    空指標異常
    • NoSuchFieldException    欄位未找到異常
    • NoSuchMethodException    方法未找到異常
    • NumberFormatException    字串轉換為數字異常
    • NegativeArraySizeException        陣列元素個數為負數異常
    • StringIndexOutOfBoundsException    字串索引超出範圍異常
    • IOException            輸入輸出異常
    • IllegalAccessException    不允許訪問某類異常
    • InstantiationException    當應有程式使用Class類中的呢我Instance()方法建立一個類例項,而指定的類物件無法被例項化,丟擲此異常。
    • EOFException        檔案已結束異常
    • FileNotFoundException    檔案未找到異常
  • 執行時異常    (RuntimeException)
    • NullPointerException    空指標異常
    • ArrayIndexOutOfBoundsException    陣列下標越界異常
    • ArithmeticException    算術異常
    • ArrayStoreException    陣列中包含不相容的值的異常
    • IllegalArgumentException    非法引數異常
    • SecurityException        安全性異常
    • NegativeArraySizeException        陣列元素個數為負數異常

40,Android的資料儲存

  • SQLite

    • 型別:NULL、Integer、Real、Text、Blob(大資料)
    • 包android.database.sqlite的方法
      • beginTransaction()
      • close()
      • delete()
      • endTransaction()
      • execSQL()
      • insert()
      • openOrCreateDatabase()
      • query()
      • rawQuery()
      • update()
  • SharedPreference

    • 本質是XML檔案,常用於引數設定,無法條件查詢
    • 型別:boolean、int、float、long、String
    • 步驟
      • 根據Context獲取SharedPreferences物件
      • 利用edit()方法獲取Editor物件
      • 通過Editor物件儲存key-value鍵值對資料
      • 通過commit()方法提交資料
    • 常用方法
      • contains()
      • edit()
      • getAll()
      • getXXX()
  • ContentProvider

    • 所有應用程式共享的儲存方式,音訊視訊圖片通訊錄等
    • 提供URI物件,由“content://”、資料路徑,標識ID組成
    • 資料包裝器,可以把SQLite包裝起來,實現非路徑訪問
    • 步驟:
      • 在當前應用程式定義一個ContentProvider
      • AndroidManifest.xml中註冊此ContentProvider
      • 其他程式通過ContentProvider和Uri獲取資料
  • File

    • 用於儲存大資料量的資料
    • 兩種操作方式
      • Java提供的IO流體(僅當前程式可見,解除安裝即刪除)
        • 1....1.    openFileInput()
        • 1....2.    openFileOutput()
      • Environment類(全域性可操作)
        • 1....1.    getExternalStorageDirectory()

41,Android的回收

  • WeakReference    

    • 弱引用    只有它指向object,並且GC執行,則回收object
    • 例項
import java.lang.ref.WeakReference;

public class WeakReferenceTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A a = new A();
        a.str = "Hello, reference";
        WeakReference<A> weak = new WeakReference<A>(a);
        a = null;
        int i = 0;
        while (weak.get() != null) {
            System.out.println(String.format("Get str from object of WeakReference: %s, count: %d", weak.get().str, ++i));
            if (i % 10 == 0) {
                System.gc();
                System.out.println("System.gc() was invoked!");
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
        }
        System.out.println("object a was cleared by JVM!");
    }

}
  • 結果
Get str from object of WeakReference: Hello, reference, count: 1
Get str from object of WeakReference: Hello, reference, count: 2
Get str from object of WeakReference: Hello, reference, count: 3
Get str from object of WeakReference: Hello, reference, count: 4
Get str from object of WeakReference: Hello, reference, count: 5
Get str from object of WeakReference: Hello, reference, count: 6
Get str from object of WeakReference: Hello, reference, count: 7
Get str from object of WeakReference: Hello, reference, count: 8
Get str from object of WeakReference: Hello, reference, count: 9
Get str from object of WeakReference: Hello, reference, count: 10
System.gc() was invoked!
object a was cleared by JVM!
  • SoftReference    

    • 強引用    當系統記憶體不足時才回收,並後續自動啟動
    • 例項
import java.lang.ref.SoftReference;

public class SoftReferenceTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A a = new A();
        a.str = "Hello, reference";
        SoftReference<A> sr = new SoftReference<A>(a);
        a = null;
        int i = 0;
        while (sr.get() != null) {
            System.out.println(String.format("Get str from object of SoftReference: %s, count: %d", sr.get().str, ++i));
            if (i % 10 == 0) {
                System.gc();
                System.out.println("System.gc() was invoked!");
            }
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {

            }
        }
        System.out.println("object a was cleared by JVM!");
    }

}
  • 結果
Get str from object of SoftReference: Hello, reference, count: 1
Get str from object of SoftReference: Hello, reference, count: 2
Get str from object of SoftReference: Hello, reference, count: 3
Get str from object of SoftReference: Hello, reference, count: 4
Get str from object of SoftReference: Hello, reference, count: 5
Get str from object of SoftReference: Hello, reference, count: 6
Get str from object of SoftReference: Hello, reference, count: 7
Get str from object of SoftReference: Hello, reference, count: 8
Get str from object of SoftReference: Hello, reference, count: 9
Get str from object of SoftReference: Hello, reference, count: 10
System.gc() was invoked!
Get str from object of SoftReference: Hello, reference, count: 11
Get str from object of SoftReference: Hello, reference, count: 12
Get str from object of SoftReference: Hello, reference, count: 13
Get str from object of SoftReference: Hello, reference, count: 14
Get str from object of SoftReference: Hello, reference, count: 15
Get str from object of SoftReference: Hello, reference, count: 16
Get str from object of SoftReference: Hello, reference, count: 17
Get str from object of SoftReference: Hello, reference, count: 18
Get str from object of SoftReference: Hello, reference, count: 19
Get str from object of SoftReference: Hello, reference, count: 20
System.gc() was invoked!
Get str from object of SoftReference: Hello, reference, count: 21
Get str from object of SoftReference: Hello, reference, count: 22
Get str from object of SoftReference: Hello, reference, count: 23
Get str from object of SoftReference: Hello, reference, count: 24
Get str from object of SoftReference: Hello, reference, count: 25
Get str from object of SoftReference: Hello, reference, count: 26
Get str from object of SoftReference: Hello, reference, count: 27
Get str from object of SoftReference: Hello, reference, count: 28

42,網路通訊

  • 使用HttpURLConnection訪問網路

    • 建立一個URL物件
      • URL url=new URL(http://www.baidu.com);
    • 利用HttpURLConnection物件從網路中獲取資料
      • HttpURLConnection conn=(HttpURLConnection)url.openConnection();
    • 設定連線超時
      • conn.setConnectionTimeout(6*1000);
    • 對相應嗎進行判斷:
      • if(conn.getResponseCode() !=200)throw new RuntimeException("請求url失敗")
    • 得到返回的資料流:
      • InputStream is =conn.getInputStream();
    • 輸入流轉為字串
      • String result=readData(is,"GBK");
    • 關閉連線
      • conn.disconnect();
  • 使用HttpClient訪問網路

    • 說明:增強版的HttpURLConnection,不執行JavaScript/不解析處理內容
    • 建立HttpClient物件
    • 建立請求方法的例項,並指定請求URL
    • 傳送請求引數
    • 呼叫HttpClient物件的execute傳送請求
    • 呼叫HttpResponse的getAllHeaders()等方法獲取響應
    • 釋放連線

43,更新UI

  • Thread+Handler機制
    • 由新執行緒傳送訊息,再由主執行緒Handler處理訊息
  • Handler物件傳送訊息方法
    • postMessage()
    • sendMessage()
    • sendEmptyMessage()
  • Handler物件接收訊息方法
    • handlerMessage()
    • hasMessage()
  • Handler訊息機制的4個關鍵物件
    • Handler        處理者
    • Message        訊息資料結構
    • MessageQueue    訊息佇列
    • Looper        每個執行緒中MessageQueue的管家

44,進入Shell

  • 工具
    • 路徑:Android\sdk\platform-tools
    • 工具:在終端中打入指令adb shell
  • 注意
    • 在360等各個軟體助手開啟時,命令出錯,因為搶佔埠。

45,問題解答(未完待續)

  • 怎麼能讓程式持續執行

  • 華為手機進入工廠設定(開啟LOG)的神祕程式碼

    • *#*#2846579#*#*
  • Thread/Looper/Handler/Message/Intent

    • Handler    元件內用於執行緒間的通訊的訊息佇列
    • Intent        元件間的通訊
    • Looper        訊息輪詢器
    • 發現新訊息,呼叫handlemessage方法
    • Message    訊息
  • 怎麼能讓程式持續執行

  • 怎麼能讓程式持續執行

  • 啟動執行緒

  • 怎麼能讓程式在各種螢幕都能執行

  • 怎麼設定開機自動啟動

  • 怎麼設定程序升級

  • 怎麼把程式放到市場軟體

  • 原始碼被反編譯後,怎麼保證密碼不洩漏

    • 答:用不對稱加密技術