Android 简明教程
Android - Best Practices
在开发 android 应用程序时有一些你可以遵循的做法。这些是由 android 本身建议的,它们会随着时间的推移不断改进。
这些最佳实践包括交互设计特性、性能、安全和隐私、兼容性、测试、分发和盈利技巧。它们已被缩小范围,如下列出。
Best Practices - User input
每个文本字段都有不同的任务。例如,一些文本字段用于文本,一些用于数字。如果是用于数字,那么当该文本字段获得焦点时最好显示数字键盘。其语法为。
<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" />
Best Practices - Background jobs
在应用程序中,有一些工作在应用程序后台运行。它们的工作可能是从互联网获取某物、播放音乐等。建议不要在 UI 线程中完成长时间等待的任务,相反应该在服务或 AsyncTask 的后台进行。
Best Practices - Performance
你的应用程序性能应该达到预期目标。但它不应该在前台执行不同,而应该在设备连接到电源或充电时在后台执行不同。可以通过 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);
Best Practices - Security and privacy
你的应用程序应该是安全的,这一点很重要,不仅是应用程序,还有用户数据和应用程序数据也应该是安全的。可以通过以下因素提高安全性。
-
使用内部存储,而不是外部存储来存储应用程序文件
-
尽可能使用内容提供程序
-
连接网络时使用 SSL
-
使用适当的权限访问设备的不同功能
Example
以下示例演示了开发 Android 应用程序时应遵循的一些最佳实践。它创建了一个基本应用程序,允许您指定如何使用文本字段,以及如何通过检查手机的充电状态来提高性能。
要尝试此示例,您需要在实际设备上运行此示例。
Steps |
Description |
1 |
您将使用 Android studio IDE 在包 com.example.sairamkrishna.myapplication 下创建一个 Android 应用程序。 |
2 |
修改 src/MainActivity.java 文件以添加代码 |
3 |
修改布局 XML 文件 res/layout/activity_main.xml,如有需要,则添加任何 GUI 组件。 |
4 |
运行该应用程序,选择一个正在运行的安卓设备,并在该设备上安装应用程序并验证结果。 |
以下是 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 运行应用,请打开您的一个项目的活动文件并单击工具栏上的运行图标。Android Studio 将显示以下图像。
上图显示了应用程序的输出
现在,只需在用户名字段上键入,您会看到来自词典的内置 Android 建议将开始出现。这显示在上面。
现在您将看到密码字段。当您开始在该字段中输入数据时,它将消失。它显示在上面。
最后,只需将您的设备连接到交流电缆或 USB 电缆,然后按充电检查按钮。在我的例子里,我连接交流电源,它显示了以下消息。