Android開發教學
Android 開發環境配置
Android 架構
Android 應用組件
Android Hello World示例
Android 資源組織和訪問
Android Activity
Android Service
Android廣播接收器
Android內容提供者
Android碎片/片段
Android Intent過濾器
Android UI佈局
Android LinearLayout
Android RelativeLayout
Android TableLayout
Android AbsoluteLayout
Android FrameLayout
Android ListView
Android GridView
Android UI控件
Android TextView
Android EditText
Android AutoCompleteTextView
Android Button
Android ImageButton
Android CheckBox
Android ToggleButton
Android RadioButton
Android RadioGroup
Android事件處理
Android樣式和主題
Android樣式示例
Android主題示例
Android自定義組件
Android拖放
Android通知
Android基於位置服務
Android發送電子郵件
Android發送短信/SMS
Android撥打電話
發佈Android應用
ArrayAdapter
SimpleCursorAdapter
Android ProgressDialog
Android Spinner
使用活動代碼自定義Android組件
使用佈局文件自定義Android組件
Android自定義組件及屬性
Android Alertdialog(警告對話框)
Android Animation(動畫)實例
Android音頻捕獲(錄音)
Android音頻管理器實例
Android AutoCompleteTextView(自動完成)實例
Android最佳實踐
Android Bluetooth(藍牙)實例
Android Camera(攝像頭)
Android Clipboard(複製/剪貼板)
Android自定義字體
Android數據備份
Android Gestures/手勢
Android圖片效果
Android圖片切換
Android內部存儲
Android JetPlayer實例
Android JSON解析器
Android加載Spinner
Android本地化
Android登錄實例
Android MediaPlayer(多媒體播放)

Android最佳實踐

有一些做法可以遵循,在開發Android應用程序。這些建議由Android自身和保持在對於時間裏可改善。

這些最佳實踐包括交互設計功能,性能,安全性和私隱,兼容性,測試,分發和貨幣化的提示。它們被縮小並列示如下。

最佳實踐 - 用戶輸入

每個文本字段都用於不同的工作。例如,一些文本字段是文本,有些是用於數字。如果它是數字那麼最好是顯示數字鍵盤時文本字段居中。其語法如下。

<EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" />

其他然後,如果字段是密碼,那麼它必須顯示密碼提示,這樣用戶可以很容易地記住密碼。它可以實現爲如下:

<EditText android:id="@+id/password" android:hint="@string/password_hint" android:inputType="textPassword" />

最佳實踐 - 後臺作業

但是也有一些在應用程序後臺運行的某些工作在應用程序。這些工作可能是獲取從互聯網上的一些數據或東西,播放音樂等它建議在長等待任務不應在UI線程和相當的後臺由服務或異步工作完成。

異步任務VS服務。

兩者都用來做後臺任務,但服務不會受到大多數用戶接口名爲生命週期事件,因此在它繼續的情況下,將關閉AsyncTask運行。

最佳實踐 - 性能

應用程序的性能應該是到達標記。但它執行不同的前端,但在後端時,它的設備被連接到一個電源或充電。充電可能是從USB和電線。

如果設備自己充電,建議更新應用程序的設置,如果有的話,如每當設備連接最大化刷新率。這是可以做到的。

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = context.registerReceiver(null, ifilter); // Are we charging / charged? Full or charging. int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); // How are we charging? From AC or USB. int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);

最佳實踐 - 安全和隱私

它是應用程序應該是安全的,而不是僅重視應用,但用戶數據和應用程序數據也應得到保障。安全性可提高受以下因素。

  1. 使用內部存儲而不是外部存儲應用程序的文件

  2. 儘可能使用內容提供商

  3. 連接到網絡時使用SSL

  4. 使用適當的權限來訪問設備的不同功能

例子

下面的例子演示了一些開發Android應用程序時應該遵循的最佳實踐。創建一個基本的應用程序,允許指定如何使用文本字段,以及如何通過檢查手機的充電狀態,以提高性能。

爲了試驗這個例子,需要在實際設備上運行。

Steps

描述

1

使用Android Studio創建Android應用程序,並將其命名爲:BestPractices。在創建這個項目時確保目標SDK編譯在Android SDK的最新版本或使用更高級別的API。

2

修改 src/MainActivity.j ava 文件添加代碼

3

如果修改所需的佈局XML文件 res/layout/activity_main.xml添加GUI組件

4

修改 res/values/string.xml 文件,並添加必要的字符串常量組件值

5

修改 AndroidManifest.xml 添加必要的權限

6

運行應用程序並選擇運行Android的設備,並在其上安裝的應用和驗證結果

這裏爲 src/com.yiibai.bestpractices/MainActivity.java 的內容 

package com.example.bestpractices; import android.os.BatteryManager; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button Check; private BatteryManager battery; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Check = (Button)findViewById(R.id.button1); } public void check(View view){ IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); Intent batteryStatus = registerReceiver(null, ifilter); int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; // How are we charging? int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; if(usbCharge){ Toast.makeText(getApplicationContext(),"Mobile is
charging on USB",Toast.LENGTH_LONG).show(); } else{ Toast.makeText(getApplicationContext(),"Mobile is
charging on AC",Toast.LENGTH_LONG).show(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

以下是文件 activity_main.xml 的內容:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="22dp" android:layout_marginTop="20dp" android:text="@string/username" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:ems="10" android:inputType="textCapSentences|textAutoCorrect" > <EditText android:id="@+id/password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="34dp" android:ems="10" android:hint="@string/password_hint" android:inputType="textPassword" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/textView1" android:layout_below="@+id/message" android:layout_marginTop="50dp" android:text="@string/password" android:textAppearance="?android:attr/textAppearanceMedium" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/password" android:layout_centerHorizontal="true" android:layout_marginTop="34dp" android:onClick="check" android:text="@string/check" />

以下是文件 Strings.xml 的內容:

<string name="app_name">BestPractices <string name="action_settings">Settings <string name="hello_world">Hello world! <string name="username">Username <string name="password">Password <string name="password_hint">Hello world! <string name="check">Charging check

以下是文件  AndroidManifest.xml 的內容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yiibai.bestpractices" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.yiibai.bestpractices.MainActivity" android:label="@string/app_name" > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />

讓我們試着運行BestPractices應用程序。啓動應用程序之前會顯示如下窗口,選擇要運行的Android應用程序的選項。

Android最佳實踐

選擇移動設備作爲一個選項,然後檢看移動設備將顯示如下畫面。

Anroid

現在,只需鍵入的用戶名字段,會看到內置的詞典建議將啓動顯示出來。這如下所示。

Anroid

現在,將看到提示在密碼字段。它儘快將消失,開始寫入的字段。它如下所示。

Anroid

最後,只需將設備連接到AC線或USB線,按下充電覆選按鈕。就我而言,通過USB電纜連接PC,以便它顯示以下信息。

Anroid

代碼下載: http://pan.baidu.com/s/1eQH5aN4