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

Android最佳實踐

有一些做法可以遵循,在開發(fā)Android應(yīng)用程序。這些建議由Android自身和保持在對于時間里可改善。

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

最佳實踐 - 用戶輸入

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

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

其他然后,如果字段是密碼,那么它必須顯示密碼提示,這樣用戶可以很容易地記住密碼。它可以實現(xiàn)為如下:

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

最佳實踐 - 后臺作業(yè)

但是也有一些在應(yīng)用程序后臺運行的某些工作在應(yīng)用程序。這些工作可能是獲取從互聯(lián)網(wǎng)上的一些數(shù)據(jù)或東西,播放音樂等它建議在長等待任務(wù)不應(yīng)在UI線程和相當(dāng)?shù)暮笈_由服務(wù)或異步工作完成。

異步任務(wù)VS服務(wù)。

兩者都用來做后臺任務(wù),但服務(wù)不會受到大多數(shù)用戶接口名為生命周期事件,因此在它繼續(xù)的情況下,將關(guān)閉AsyncTask運行。

最佳實踐 - 性能

應(yīng)用程序的性能應(yīng)該是到達(dá)標(biāo)記。但它執(zhí)行不同的前端,但在后端時,它的設(shè)備被連接到一個電源或充電。充電可能是從USB和電線。

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

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);

最佳實踐 - 安全和隱私

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

  1. 使用內(nèi)部存儲而不是外部存儲應(yīng)用程序的文件

  2. 盡可能使用內(nèi)容提供商

  3. 連接到網(wǎng)絡(luò)時使用SSL

  4. 使用適當(dāng)?shù)臋?quán)限來訪問設(shè)備的不同功能

例子

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

為了試驗這個例子,需要在實際設(shè)備上運行。

Steps 描述
1 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將其命名為:BestPractices。在創(chuàng)建這個項目時確保目標(biāo)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 添加必要的權(quán)限
6 運行應(yīng)用程序并選擇運行Android的設(shè)備,并在其上安裝的應(yīng)用和驗證結(jié)果

這里為 src/com.yiibai.bestpractices/MainActivity.java 的內(nèi)容 

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 ==