Android應用開發的基本概念(入門)

Android應用開發的基本概念:

前言

做遊戲將近三年(主要以頁遊和手遊),今年初公司業務發展需要轉做Android,到現在已學習4個月之久,已初步搭建完成公司的SDK項目,項目閒下來使用博客備忘自己的前期的一些總結歸納(東西不是原創來自互聯網,博客的一些梳理,大綱備忘),本人不喜歡文字長篇大論,簡單的圖表+簡短的重點備忘個人認爲是備忘的較好方式(能快速拉起自己的存儲記憶,然後具體問題具體分析),備忘的無非是一個【流程+重點】

【小公司,目前孤軍奮戰、如果有遺漏或者成長建議請大牛指出!感謝,感謝!】

1 Android MVC簡介:

這裏寫圖片描述

  • 模型對象:存儲着應用的數據和業務邏輯【如 : 網絡、數據庫、IO數據等】
  • 視圖對象:知道如何在屏幕上繪製自己以及如何響應用戶的輸入,如用戶的觸摸等【如:View 、VieGroup 、Button 等組件、XML文件進行界面的描述、webView中的html+css+js】
  • 控制對象 :包含了應用的邏輯單元,是視圖與模型對象的聯繫紐帶【如:Activity、Service、過濾Filter等】

2 Android 程序設計基礎

2.1 基本組件

2.1.1 Activity :

Activity 是用戶與UI交互的控制層
啓動和生命週期:
Android 系統會通過調用對應於其生命週期中特定階段的特定回調方法在 Activity 實例中啓動代碼。 有一系列可啓動Activity的回調方法,以及一系列可分解Activity的回調方法。

生命週期:
這裏寫圖片描述

Activity狀態轉換:
這裏寫圖片描述

三種常用的狀態情況:

Running :
在這種狀態下,Activity處於前臺,且用戶可以與其交互。(有時也稱爲“運行”狀態。)

Paused :
在這種狀態下,Activity被在前臺中處於半透明狀態或者未覆蓋整個屏幕的另一個Activity—部分阻擋。 暫停的Activity不會接收用戶輸入並且無法執行任何代碼。

Stopped:
在這種狀態下,Activity被完全隱藏並且對用戶不可見;它被視爲處於後臺。 停止時,Activity實例及其諸如成員變量等所有狀態信息將保留,但它無法執行任何代碼。

Activity 啓動方式:
a、指定啓動器Activity 在 mainfest.xml 中進行配置如:
···xml

2.1.2 Intent

一個 Intent 是一個消息Object,【請求+數據】 你能夠使用從另一個 app component 請求一些動作。

Inten 的處理主要是操作系統負責:

基本操作
啓動一個Activity:Context.startActivity(Intent intent);
啓動一個Service:Context.startService(Intent service);
綁定一個Service:Context.bindService(Intent service, ServiceConnection conn, int flags);
發送一個Broadcast:Context.sendBroadcast(Intent intent);

兩種類型:
(1):Explicit intents(顯示意圖).
顯示意圖,會指定響應這意圖的組件。

(2): Implicit intents (隱含意圖)

隱含意圖不聲明要啓動的組件的類名稱,而是聲明要執行的操作。 該操作指定您要執行的操作,比如查看、編輯、發送或 獲取 某項。 意向通常還包含與操作關聯的數據,比如您要查看的地址或您要發送的電子郵件消息。根據要創建的意向,數據可能是 Uri、多種其他數據類型之一,或意向可能根本就不需要數據如:

Uri number = Uri.parse("tel:5551234");
Intent callIntent = new Intent(Intent.ACTION_DIAL, number);

注意:如果您調用了意向,但設備上沒有可用於處理意向的應用,您的應用將崩潰
要確認是否存在可響應意向的可用Activity,請調用 queryIntentActivities() 來獲取能夠處理您的Intent 的Activity列表。 如果返回的 List 不爲空,您可以安全地使用該意向
【詳細可以看Internet 的匹配過程】

PackageManager packageManager = getPackageManager();
List activities = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
boolean isIntentSafe = activities.size() > 0;
2.1.3 Context Provider

Content providers管理對結構化數據集的使用.它們封裝數據,並提供了數據安全的機制.Content providers是從一個進程連接另一個進程中的數據的標準接口。其主要作用不是用於數據存儲、而是給外部進程 APP 提供數據。【如我們 通訊錄數據可以放在 Content providers 中等】

這裏寫圖片描述

官方解釋:其本質是對AIDL 的封裝

Content providers are one of the primary building blocks of Android applications, providing content to applications. They encapsulate data and provide it to applications through the single ContentResolver interface. A content provider is only required if you need to share data between multiple applications. For example, the contacts data is used by multiple applications and must be stored in a content provider. If you don’t need to share data amongst multiple applications you can use a database directly via

2.1.4 Service

Service 是一個能在後臺運行操作的應用組件,不提供用戶交互

一個服務基本上有兩種形式:
(1)Started
一個服務開啓,當一個應用組件(例如一個activity)調用 startService()。一旦開啓,一個服務將一直在後臺運行,即使開啓它的組件已經被銷燬。通常,一個服務開啓執行一個單一的操作,並且不會返回結果給調用者。
例如:下載,上傳,當一個操作停止應該銷燬這個服務。
(2)Bound
一個服務是“bound”當一個應用組件綁定同一個服務,【通過調用 bindService()】。一個綁定的服務提供Client-Server的接口,允許組件和服務相互作用,發送結果,得到結果,甚至訪問IPC進程。一個被綁定的服務和綁定它的組件的運行時間一樣。當多個組件一個服務時,當所有的綁定解除,這個服務被銷燬。


2.2 Android資源組織讀取和核心文件

2.2.1資源組織:

android 資源整體分兩大類,分別是assets和res
如圖:
這裏寫圖片描述

a. assets。assets類資源放在工程根目錄的assets子目錄下,它裏面保存的是一些原始的文件,可以以任何方式來進行組織。
這些文件最終會被原裝不動地打包在apk文件中。如果我們要在程序中訪問這些文件,那麼就需要指定文件名來訪問。
例如,假設在assets目錄下有一個名稱爲filename的文件,那麼就可以使用以下代碼來訪問它:

AssetManager am= getAssets();    
InputStream is = assset.open("filename");  
  1. res。res類資源放在工程根目錄的res子目錄下,它裏面保存的文件大多數都會被編譯,並且都會被賦予資源ID。這樣我們就可以在程序中通過ID來訪問res類的資源。res類資源按照不同的用途可以進一步劃分爲以下9種子類型:
    詳細見: Android 官網

Res 文件 下的文件大部分會被 【aapt資源打包工具】編譯(raw 文件下除外),並在自動生成的 R.java 中生成對應的資源ID,
在程序或者資源文件中通過這些ID常量來訪問指定的資源.

2.1.2資源適配選擇

這裏寫圖片描述

2.2.3資源打包、讀取流程:

這裏寫圖片描述

2.2.4 核心文件:

AndroidMainfest.xml
每個應用的根目錄中都必須包含一個 AndroidManifest.xml 文件(且文件名精確無誤)。 清單文件爲 Android 系統提供有關您的應用的基本信息,系統必須獲得這些信息才能運行任意應用代碼。 此外,清單文件還可執行以下操作.

主要包含:

  • 爲應用的 Java 軟件包命名。軟件包名稱充當應用的唯一標識符
  • 描述應用的各個組件,即:構成應用的 Activity、服務、廣播接收器和內容提供程序。 爲實現每個組件的類命名併發布其功能(例如,它們可以處理的 Intent 消息)。根據這些聲明,Android 系統可以瞭解這組件具體是什麼,以及在什麼條件下可以啓動它們
  • 確定將託管應用組件的進程
  • 聲明應用必須具備哪些權限才能訪問 API 中受保護的部分並與其他應用交互
  • 還聲明其他應用與該應用組件交互所需具備的權限
  • 列出 Instrumentation 類,這些類可在應用運行期間提供分析和其他信息。這些聲明只會在應用處在開發和測試階段時出現在清單文件中;它們會在應用發* 布之前被刪除
  • 聲明應用所需的最低 Android API 級別
  • 列出應用必須鏈接到的庫

2.3 用戶界面UI及常用組件及事件

2.3.1常用組件:(彙總)

  • TextView:
  • ListView
  • Tost
  • EditText
  • RadioGroup
  • RadioButton
  • CheckBox
  • Spinner
  • DatePicker
  • TimePicker
  • Button
  • Menu
  • Dialog
  • ImageView
  • ImageButton
  • ImageSwitcher
  • Gallery(拖動效果)
  • AutoComplete-TextView 、
  • GridView
  • ScrollView、
  • ProgressBar
  • SeekBar
  • Notification
  • NotificationManager(狀態欄提示)
  • ProgressDialog

2.3.2 View 的事件分發機制:

這裏寫圖片描述

2.4 Android數據存儲方式

2.4.1 shared Preferences

應用程序在運行的時候,可能會隨着用戶的使用而保持該用戶的配置信息,如上次播放時的eq設置,音量設置,上網的cookies信息等等,這些小量 的信息可以通過SharedPreferences來保持,通過SharedPreferences保持的數據爲一個XML文件,位於應用程序的私有文件夾

2.4.2 Files

Android 中可以在設備本身存儲設備或者外接入的存儲設備中創建用於保存數據的文件。默認情況下,文件之間不能共享。用文件來存儲數據可以通過
openFileOuput 獲得對文件流操作。(如果文件不存在會自動創建一個文件)通過loader方法來去文件中的數據。

2.4.3 SQLite:

SQLite 是一種嵌入式關係型數據庫、支持大小爲2T 具有如下特徵
輕量級: 編譯後動態連接庫小
獨立:不依賴第三方軟件
跨平臺、且支持多語言接口

2.4.5NetWork

通過網絡獲編寫服務端獲取、保存資源。

2.4.6 contentProvider

2.5 其他

2.5 Android繪圖渲染(Android遊戲開發)

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章