注:该系列博客为bz学习和使用Android开发所积累的经验和要注意的点,起到提示和笔记的作用,会持续更新(每积累十个就会上传上来)


21.对字符串进行非空判断的时候,可以使用TextUtils.isEmpty()方法,这是一个非常好用的方法,它可以一次性进行


两种空值得的判断。当字符串等于null或者等于空字符串的时候,这个方法都会返回true



22.EditText.setSelection()方法是将光标移动到文本的末尾位置以便于继续输入


23.EditText布局中可以使用android:inputType=""中的一些选择来确定这个输入框中要输入的内容的属性,比如使用

android:inputType="textPassword",这样就是设定这个输入框中要输入的是密码,所以当用户在这个输入框输入

密码的时候,就不会直接显示密码,而是比较常见的黑点,这样可以提高用户的使用体验,而且给用户一种安全感



24.用代码创建dialog

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
dialogBuilder.setTitle("Warning");//设置标题
dialogBuilder.setMessage("You are forced to be offline. Please try to login again.");//设置提示内容
dialogBuilder.setCancelable(false);//当为false时不能通过其他方式结束dialog
dialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {


25.升级数据库的最佳写法,大致是:在onUpgrade()方法中使用没有break的switch语句,其中case用来判断

旧的版本号,详见《第一行代码》P2


26.关于系统服务:

getSystemService(String name)是Android很重要的一个API,根据NAME来取得对应的Object,

然后转换成相应的服务对象。以下介绍系统相应的服务。

27.adapter.notifyDataSetChanged()方法的主要作用其实就是当ListView中的数据改变时,可以达到刷新列表的功能

=================================================================
 name                                             返回的对象                                    说明
 WINDOW_SERVICE               WindowManager                     管理打开的窗口程序
 LAYOUT_INFLATER_SERVICE     LayoutInflater                     取得xml里定义的view
 ACTIVITY_SERVICE               ActivityManager                管理应用程序的系统状态
 POWER_SERVICE                  PowerManger                         电源的服务
 ALARM_SERVICE                   AlarmManager                       闹钟的服务
 NOTIFICATION_SERVICE     NotificationManager                   状态栏的服务
 KEYGUARD_SERVICE          KeyguardManager                      键盘锁的服务
 LOCATION_SERVICE              LocationManager                   位置的服务,如GPS
 SEARCH_SERVICE                 SearchManager                        搜索的服务
 VIBRATOR_SERVICE                 Vibrator                                  手机震动的服务
 CONNECTIVITY_SERVICE        Connectivity                          网络连接的服务
 WIFI_SERVICE                           WifiManager                            Wi-Fi服务
 TELEPHONY_SERVICE          TeleponyManager                        电话服务
 ==================================================================



28.注意关闭进度对话框使用的方法是dismiss()



29.在非UI线程中如果有的操作牵扯到了UI操作,可以使用runOnUiThread()方法从子线程切换到主线程



30.在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。

在Android中Activity的启动模式决定了Activity的启动运行方式。

Android总Activity的启动模式分为四种:



Activity启动模式设置:


<activity android:name=".MainActivity" android:launchMode="standard" />



Activity的四种启动模式:



1. standard



模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。

standard是系统默认的启动模式。



2. singleTop



如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶

(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。



3. singleTask


如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,

因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 



4. singleInstance


在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式

的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,

其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。