• Android Video Tutorials

Android - 最佳實踐



在開發 Android 應用程式時,您可以遵循一些實踐。這些是 Android 本身建議的,並且隨著時間的推移不斷改進。

這些最佳實踐包括互動設計功能、效能、安全和隱私、相容性、測試、分發和獲利技巧。它們經過細化,並列出如下。

最佳實踐 - 使用者輸入

每個文字欄位都用於不同的工作。例如,一些文字欄位用於文字,而一些用於數字。如果是數字,則最好在該文字欄位獲得焦點時顯示數字鍵盤。其語法為:

<EditText
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/editText"
   android:layout_alignParentRight="true"
   android:layout_alignParentEnd="true"
   android:hint="User Name"
   android:layout_below="@+id/imageView"
   android:layout_alignLeft="@+id/imageView"
   android:layout_alignStart="@+id/imageView"
   android:numeric="integer" />

除此之外,如果您的欄位用於密碼,則必須顯示密碼提示,以便使用者可以輕鬆記住密碼。可以實現為:

<EditText
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:id="@+id/editText2"
   android:layout_alignLeft="@+id/editText"
   android:layout_alignStart="@+id/editText"
   android:hint="Pass Word"
   android:layout_below="@+id/editText"
   android:layout_alignRight="@+id/editText"
   android:layout_alignEnd="@+id/editText"
   android:password="true" />

最佳實踐 - 後臺作業

應用程式中有一些作業在應用程式後臺執行。他們的工作可能是從網際網路獲取某些東西,播放音樂等。建議不要在 UI 執行緒中執行長時間等待的任務,而應在後臺透過服務或 AsyncTask 執行。

AsyncTask 與服務。

兩者都用於執行後臺任務,但服務不受大多數使用者介面生命週期事件的影響,因此它在會關閉 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);

最佳實踐 - 安全和隱私

您的應用程式必須安全,不僅是應用程式,而且使用者資料和應用程式資料也必須安全。可以透過以下因素提高安全性。

  • 使用內部儲存而不是外部儲存來儲存應用程式檔案

  • 儘可能使用內容提供器

  • 連線到 Web 時使用 SSL

  • 使用適當的許可權來訪問裝置的不同功能

示例

以下示例演示了在開發 Android 應用程式時應遵循的一些最佳實踐。它建立一個基本應用程式,允許您指定如何使用文字欄位以及如何透過檢查手機的充電狀態來提高效能。

要試驗此示例,您需要在實際裝置上執行它。

步驟 描述
1 您將使用 Android Studio IDE 在包 com.example.sairamkrishna.myapplication 下建立一個 Android 應用程式。
2 修改 src/MainActivity.java 檔案以新增程式碼
3 修改佈局 XML 檔案 res/layout/activity_main.xml,如果需要,新增任何 GUI 元件。
4 執行應用程式並選擇一個正在執行的 Android 裝置,將應用程式安裝到它上面並驗證結果。

以下是 src/MainActivity.java 的內容

package com.example.sairamkrishna.myapplication;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {
   EditText ed1,ed2;
   Button b1;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      ed1=(EditText)findViewById(R.id.editText);
      ed2=(EditText)findViewById(R.id.editText2);
      b1=(Button)findViewById(R.id.button);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         
         public void onClick(View v) {
            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;

            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
   protected void onDestroy() {
      super.onDestroy();
   }
}

以下是 activity_main.xml 的內容

<?xml version="1.0" encoding="utf-8"?>
   <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:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
   
   <TextView android:text="Bluetooth Example" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:hint="User Name"
      android:layout_below="@+id/imageView"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView"
      android:numeric="integer" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:hint="Pass Word"
      android:layout_below="@+id/editText"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText"
      android:password="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Check"
      android:id="@+id/button"
      android:layout_below="@+id/editText2"
      android:layout_centerHorizontal="true" />
      
</RelativeLayout>

以下是 Strings.xml 的內容

<resources>
    <string name="app_name">My Application</string>
</resources>

以下是 AndroidManifest.xml 的內容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
      
   </application>
</manifest>

讓我們嘗試執行您的應用程式。我假設您已將您的實際 Android 移動裝置連線到您的計算機。要從 Android Studio 執行應用程式,請開啟專案的 Activity 檔案之一,然後單擊工具欄中的執行 Eclipse Run Icon 圖示。Android Studio 將顯示以下影像。

Anroid Capture Tutorial

上圖顯示了應用程式的輸出

Anroid BestPractices Tutorial

現在只需在使用者名稱欄位中鍵入,您就會看到來自詞典的內建 Android 建議開始出現。如上所示。

Anroid BestPractices Tutorial

現在您將看到密碼欄位。一旦您開始在欄位中寫入,它就會消失。如上所示。

最後,只需將您的裝置連線到交流電源線或 USB 電纜,然後按充電檢查按鈕。在我的情況下,我連線了交流電源,它顯示了以下訊息。

Anroid BestPractices Tutorial
廣告

© . All rights reserved.