在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

Android最佳實(shí)踐

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

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

最佳實(shí)踐 - 用戶(hù)輸入

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

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

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

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

最佳實(shí)踐 - 后臺(tái)作業(yè)

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

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

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

最佳實(shí)踐 - 性能

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

如果設(shè)備自己充電,建議更新應(yīng)用程序的設(shè)置,如果有的話(huà),如每當(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);

最佳實(shí)踐 - 安全和隱私

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

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

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

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

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

例子

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

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

Steps 描述
1 使用Android Studio創(chuàng)建Android應(yīng)用程序,并將其命名為:BestPractices。在創(chuàng)建這個(gè)項(xiàng)目時(shí)確保目標(biāo)SDK編譯在Android SDK的最新版本或使用更高級(jí)別的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ùn)行應(yīng)用程序并選擇運(yùn)行Android的設(shè)備,并在其上安裝的應(yīng)用和驗(yàn)證結(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 ==