---恢復內容開始---前端
1、開始啓程--你的第一行Android代碼java
Android的四層架構linux
1.linux內核層--爲Android設備的各類硬件提供底層驅動android
2.系統運行庫層--經過一些C/C++庫來爲Android系統提供主要的特性支持數據庫
Android運行時庫,提供一些核心庫,容許開發者使用java語言編寫Android應用瀏覽器
Dalvik--運行時編譯安全
ART--安裝時編譯服務器
3.應用框架層--提供構建應用程序時可能遇到的各類API網絡
4.應用層--應用程序架構
2、先從看獲得的入手--探究活動
1.活動的生命週期
oncreate 方法 當Activity第一次啓動的時候調用
onDestroy 方法 當Activity銷燬的時候調用
onStrat() 方法 當Activity變成可見的時候調用
onStop() 方法 當activity 不可見的時候調用
onResume()方法 當activity能夠獲取焦點的時候 當界面的按鈕能夠被點擊了
onPause()方法 當失去焦點的時候調用 當按鈕不了能夠被點擊的時候調用
onRestart()當界面從新啓動的時候調用
2.顯式意圖--用於跳轉本身的頁面
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
3.隱式意圖--用於跳轉系統自帶程序的頁面
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.baidu.com"));
startActivity(intent);
4.界面跳轉傳遞數據(向下一個界面傳遞數據)
SecondActivity.actionStart(MainActivity.this,"data1","data2");
5.界面跳轉返回數據(返回數據給上一個界面)
startActivityForResult();
6.onSaveInstanceState()--活動被回收時調用,解決活動被回收臨時數據得不到保存問題
7.活動的啓動模式
standard--後進先出,棧頂可重複疊加
singTop--棧頂不可重複疊加 應用場景:瀏覽器書籤
singTask--檢查,若已存在,全部上面活動出棧 應用場景:瀏覽器的Activity
singleInstance--新開任務棧,新開的任務棧只有一個實例 應用場景:來電顯示
8.活動的高級用法
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("BaseActivity", getClass().getSimpleName());//知曉當前是在哪個活動
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);//隨時隨地退出程序
}
}
9.Menu的使用
10.活動的銷燬--finish();效果同back鍵
3、軟件也拼臉蛋--UI開發的點點滴滴
1.Android控件的可見屬性
visible--可見
invlsible--不可見,佔據位置和大小
gone--不可見,不佔空間
2.對話框
3.佈局,百分比佈局
gravity:對齊方式,子控件相對於當前控件的對齊方式
layout_gravity:當前控件相對於父控件的對齊方式
margin:當前控件相對於四周的間距。
padding:當前控件中的子控件相對於當前控件四周的間距。
全部控件直接或間接繼承View,全部佈局直接或間接繼承View
引入佈局
<include layout="@layout/title"/>
標題隱藏
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if (actionBar != null)
actionBar.hide();
4.ListView--用於展現大量的數據,這些數據能夠是網上下載的,也能夠是從數據庫中讀取的
更強大的滾動控件--RecyclerView
4、手機平板要兼顧--探究碎片
1.碎片是嵌入活動中顯示的
2.活動中獲得相應的碎片
RightFragment rightFragment = (RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
3.碎片中調用活動裏的方法
MainActivity activity = (MainActivity) getActivity();
4.碎片的生命週期
onAttach()--碎片與活動創建關聯時調用
onCreate()
onCreateView()--爲碎片建立視圖(加載佈局)時調用
onActivityCreated()--與碎片相關聯的活動已經加載完畢的時候調用
onStart()
onResume()
onPause()
onStop()
onDestroyView--與碎片相關聯的視圖被移除時調用
onDestroy()
onDetach()--碎片和活動解除關係時調用
5.動態加載佈局
6.平臺和手機兼容
5、全局大喇叭--詳解廣播機制--打開程序其餘組件,啓動一個服務,監聽網絡狀態(動態註冊),開機啓動(靜態註冊)等
1.標準廣播--異步執行廣播,全部廣播接收器同時接到廣播,沒法被攔截
2.有序廣播--同步執行廣播,優先級,能夠被攔截
3.動態註冊廣播--可自由地控制註冊與註銷,必需要在程序啓動後才能接收到廣播
必須取消,在onDestory()方法中調用unregisterReceiver()方法
4.靜態註冊廣播--程序未啓動時也能收到廣播
註冊後直接實現onReceive()方法
5.onReceive()方法運行較長時間而沒有結束時程序會報錯,不能作耗時操做。so,廣播接收器經常使用於,打開程序其餘組件,啓動一個服務等。
6.自定義廣播
7.中斷廣播abortBroadcast()
8.本地廣播LocalBroadcastManager--解決廣播安全性問題,只能在應用程序內部傳遞,沒法靜態註冊
6、數據存儲全方案--詳解持久化技術
1.文件存儲
openFileInput()和openFileOutput
2.SharePreferences
3.SQLite--使用LitePal操做數據庫
7、跨程序共享數據--探究內容提供器
1.不一樣應用程序共享數據(跨程序數據共享),可實現部分數據共享
2.運行時權限(Android6.0)
3.使用場景--使用現有內容提供者讀取和操做相應程序中的數據,建立本身的內容提供者給咱們的程序數據提供對外訪問接口
8、豐富你的應用程序--運用手機多媒體
1.通知(Notification)--應用程序但願向用戶發出一些提示信息,而該應用程序又不在前臺運行。
2.通知可在活動(應用較少,通常程序進入後臺才須要使用通知),廣播接收器,服務裏建立
3.調用攝像頭和相冊
4.播放多媒體文件
9、看看精彩世界--使用網絡技術
1.WebView的用法
2.使用HTTP協議訪問網絡--HTTP協議--客戶端向服務器發送一條HTTP請求,服務器收到請求後返回一些數據給客戶端,而後客戶端再對這些數據進行解析和處理
3.HttpURLConnection
4.OkHttp
5.解析XML格式數據
6.解析JSON格式數據--GSON
10、後臺默默的勞動者--探究服務
1.服務是Android實現程序後臺運行的解決方案,適合執行那些不須要和用戶交互並且還須要長期運行的任務,服務依賴與建立服務的進程,進程被殺掉,服務中止。
2非UI線程不能更新UI
耗時操做(聯網 URL)不能再UI線程執行(可能鏈接超時)
Message 消息
MessageQueue 消息隊列 存放程序收到的消息隊列
Handler 消息處理器 1.發送消息-sendMessage() 2.處理消息-handlerMessage()
Looper 輪詢器 輪轉查詢消息隊列,一旦發現有消息到達,把消息轉發給發送此消息的Handler進行處理
runOnUiThread() 異步處理消息接口封裝
3.AsyncTask
onPreExecute()--界面初始化
doInBackground(Prams...)--全部代碼在子線程中運行
onProgressUpdate(Prams...)--能夠對UI進行操做
onPostExecute(Result)--後臺任務返回結果做爲參數,能夠進行一些UI操做
4.Service
onCreate()--服務第一次建立時調用
onStartCommand()--每次啓動服務時調用
onDestroy()--服務銷燬時調用
onBind()--與服務間進行通行
5.startservice 方式開啓服務 服務就會在後臺長期運行 直到用戶手工中止 或者調用stopService()或stopSelf()方法 服務纔會被銷燬
bindService 方式開啓服務 當activity銷燬的時候服務也銷燬 不求同時生但求同時死
6.Service
onCreate()--服務第一次建立時調用
onStartCommand()--每次啓動服務時調用
onDestroy()--服務銷燬時調用
7.前臺服務--應用:彩雲天氣
8.android進程優先級
一、空進程
這是Android系統優先殺死的,由於此時該進程已經沒有任何用途。
二、後臺進程
包含不可見的Activity,即跳轉到其餘activity後,因爲資源不足,系統會將原來的activity殺死(即跳轉的來源)
三、服務進程
即Service,當系統資源不足時,系統可能會殺掉正在執行任務的Service。所以在Service執行比較耗時的操做,並不能保證必定能執行完畢。
四、可見進程
當前屏幕上能夠看到的activity,例如顯示一個對話框的activity,那麼對話框變成了前臺進程,而調用他的activity是可見進程,但並非前臺的。
五、前臺進程
當前處於最前端的activity,也就是Android最後考慮殺死的對象。通常來講,前臺進程Android系統是不會殺死的,只有當前4個都殺掉資源依舊不夠纔可能會發生。
9.服務的最佳實踐--完整版的下載示例
11、Android特點開發--基於位置的服務(Location Based Service)
1.LBS核心--肯定用戶的位置
GPS定位--手機內置的GPS硬件和衛星交互獲取當前經緯度位置,精確度高,只能在室外使用
網絡定位--根據手機當前網絡附近的三個基站進行測速,計算手機和每一個基站的位置,肯定出一個大概位置,精確度通常,室內室外都可用
2.百度地圖
12、最佳的UI體驗--Material Design實戰
1.Toolbar
2.DrawerLayout
3.NavigationView
4.FloatingActionButton--懸浮按鈕和可交互提示
5.Snackbar
6.CoordinatorLayout
7.CardView
8.AppBarLayout
9.SwipeRefreshLayout
10.CollapsingToolbarLayout
十3、繼續進階--你還須要掌握的高級技巧
1.全局獲取Context的技巧--Application
2.使用Intent傳遞對象--Serializable方式,Parcelable方式
3.定製本身的日誌工具--LogUtil封裝
4.調試Android程序
5.建立定時任務
Timer類--不適合後臺長期運行的定時任務
Alarm機制
6.Doze模式
7.多窗口模式
8.Lambda表達式
---恢復內容結束---