有一些做法可以遵循,在開發(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īng)用程序后臺運行的某些工作在應(yīng)用程序。這些工作可能是獲取從互聯(lián)網(wǎng)上的一些數(shù)據(jù)或東西,播放音樂等它建議在長等待任務(wù)不應(yīng)在UI線程和相當(dāng)?shù)暮笈_由服務(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)得到保障。安全性可提高受以下因素。
使用內(nèi)部存儲而不是外部存儲應(yīng)用程序的文件
盡可能使用內(nèi)容提供商
連接到網(wǎng)絡(luò)時使用SSL
使用適當(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 ==