有一些做法可以遵循,在開發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執行緒和相當的後台由服務或非同步工作完成。
兩者都用來做後台任務,但服務不會受到大多數使用者介面名為生命週期事件,因此在它繼續的情況下,將關閉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);
它是應用程式應該是安全的,而不是僅重視應用,但使用者資料和應用程式資料也應得到保障。安全性可提高受以下因素。
使用內部儲存而不是外部儲存應用程式的檔案
盡可能使用內容提供商
連線到網路時使用SSL
使用適當的許可權來存取裝置的不同功能
下面的例子演示了一些開發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" > <requestFocus /> </EditText> <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" /> </RelativeLayout>
以下是檔案 Strings.xml 的內容:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">BestPractices</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="username">Username</string> <string name="password">Password</string> <string name="password_hint">Hello world!</string> <string name="check">Charging check</string> </resources>
以下是檔案 AndroidManifest.xml 的內容:
<?xml version="1.0" encoding="utf-8"?> <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" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
讓我們試著執行BestPractices應用程式。啟動應用程式之前會顯示如下視窗,選擇要執行的Android應用程式的選項。
選擇移動裝置作為一個選項,然後檢看移動裝置將顯示如下畫面。
現在,只需鍵入的使用者名欄位,會看到內建的詞典建議將啟動顯示出來。這如下所示。
現在,將看到提示在密碼欄位。它盡快將消失,開始寫入的欄位。它如下所示。
最後,只需將裝置連線到AC線或USB線,按下充電核取按鈕。就我而言,通過USB電纜連線PC,以便它顯示以下資訊。