第二行代碼

---恢復內容開始---前端

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表達式
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

---恢復內容結束---

相關文章
相關標籤/搜索