1.只保留float类型的一位小数, String.format("%.1f", float值)
2.android edittext 限制输入内容: android:digits="0123456789"
3.PendingIntent可以简单地理解为延迟执行的Intent
4.RadioButton里面的属性android:button="@null"去掉前面的圆点
5.在setText()的过程中,如果出现Stirng#ID not found的错误的话,是因为传入setText()的参数不是String类型的
6.armeabi目录是专门用于存放so文件的地方,so文件是用C/C++语言进行编写,然后再用NDK编译出来的。
7.android原生状态下的工程*#*#4636#*#* 进入工程模式后,也没什么卵用
8.非android原生状态下,不同品牌的手机进入命令不同,在进入工程模式后,可以设置
log开关,在本地输出log
9.RelativeLayout 的布局特性,写在下面的控件会放在上面一层,适用于解决这样的布局问题
10.ListView的展开动画
LayoutAnimationController lac = new LayoutAnimationController(AnimationUtils.loadAnimation(MyReportActivity. this,R.anim. zoom_in));
lac.setOrder(LayoutAnimationController. ORDER_NORMAL);
report_list.setLayoutAnimation(lac);
report_list.startLayoutAnimation();
11. 注意在调用startActivityForResult()方法之前,先调用resolveActivity(),这个方法会返回能处理该Intent的第一个Activity(译注:即检查有没有能处理这个Intent的Activity)。执行这个检查非常重要,因为如果在调用startActivityForResult()时,没有应用能处理你的Intent,应用将会崩溃。所以只要返回结果不为null,使用该Intent就是安全的。
static final int REQUEST_IMAGE_CAPTURE = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
12.TextView可以通过ellipsize属性可以设置省略号的位置,start,middle,end
13.activity中继承baseactivity的点击事件没有反应,是因为在onclick中没有调用父类的方法
super.onlick();
14.android计时器控件Chronometer,时钟AnalogClock,DigitalClock,状态开关按钮ToggleButton,单选按钮RadioButton
15.String.toUpperCase()这个方法是将字符串全都转化为大写
16.当前Activity的onPause方法执行结束后才会执行下一个Activity的onCreate方法,所以在onPause方法中不适合做耗时较长的工作,
这会影响到页面之间的跳转效率
17.不要通过Bundle传递大块的数据,否则会报TransactionTooLargeException:java - Issue: Passing large data to second Activity
18.使用Adapter的时候,如果你使用ViewHolder做缓存,在getView的方法中无论这项的每个视图是否需要设置属性(比如TextView设置的属性可能为null,item的某一个按钮的背景为透明,某一项的颜色为透明等),都需要为每一项的所有视图设置属性(TextView的属性为空也需要设置setText("")),
背景透明也需要设置),否则在滑动的过程中会出现内容的显示错乱
19.什么时候不能使用Application的context
20.使用Toast时,建议定义一个全局的Toast对象,这样可以避免连续显示Toast时不能取消上一次Toast消息的情况(如果你有连续弹出Toast的情况,避免使用Toast.makeText);
21.不要通过Msg传递大的对象,会导致内存问题;
22.Eclipse的工程转成AS的版本后,在同一个机器中安装会报”INSTALL_FAILED_VERSION_DOWNGRADE“这个错误,原因是因为as除了可以在Manifest.xml文件中设置apk的版本名和版本号,还可以在build.gradle文件中设置apk的版本名和版本号,记得修改build.gralde中的版本名和版本号到最新就可以了;
23.谨慎使用Android的多进程,多进程虽然能够降低主进程的内存压力,但会遇到如下问题:
(1)不能实现完全退出所有Activity的功能(如果有同行在应用内采用多进程成功实现过完全退出程序欢迎沟通交流);
(2)首次进入新启动进程的页面时会有延时的现象(有可能黑屏、白屏几秒,是白屏还是黑屏和新Activity的主题有关);
(3)应用内多进程时,新启动一个进程都会重新跑一次Application的onCreate方法,不上重新创建一个Application,但会重新跑Application的onCreate,这样就不能在Application中缓存数据作为内存共享的途径了;
(1)不能实现完全退出所有Activity的功能(如果有同行在应用内采用多进程成功实现过完全退出程序欢迎沟通交流);
(2)首次进入新启动进程的页面时会有延时的现象(有可能黑屏、白屏几秒,是白屏还是黑屏和新Activity的主题有关);
(3)应用内多进程时,新启动一个进程都会重新跑一次Application的onCreate方法,不上重新创建一个Application,但会重新跑Application的onCreate,这样就不能在Application中缓存数据作为内存共享的途径了;
(4)多进程间通过SharedPreferences共享数据时不稳定,具体可以查阅《Android开发艺术探索》。
24.不能在Activity没有完全显示时显示PopupWindow和Dialog
25. 谨慎使用Android的透明主题,透明主题会导致很多问题,比如:如果新的Activity采用了透明主题,那么当前Activity的onStop方法不会被调用;在设置为透明主题的Activity界面按Home键时,可能会导致刷屏不干净的问题;进入主题为透明主题的界面会有明显的延时感;
26. View的面积越大绘制的时间就越长,透明通道对View的绘制速度影响很大
27. Eclipse的Android开发环境配置好后不要轻易升级ADT和build tools,不然会浪费你很多时间,还有就是一个workspace中的工程不要太多,不然每次启动都会很慢;
28. Android studio每个版本、gradle每个版本差别都比较大(我是这样认为的),对于jni代码的编译建议在Eclipse中进行,如果在Android studio中开发jni会浪费很多时间,主要是编译脚本的配置比较麻烦
29.Volley比较适合数据量不大但是通信频繁的场景。它当初的设计目标就是非常适合去进行数据量不大,但是网络通信比较频繁的操作。但是如果数据量很大的网络例如:文件下载这类的,Volley框架的效率就会比较差了。
30.
<activity
android:name=".act.ActLogin"
android:screenOrientation="portrait"
android:name=".act.ActLogin"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustUnspecified|stateHidden" />
31.handler如果是在主线程中创建的,handler执行的内容还是在主线程
32. sqlite中的replace语句表示如果存在就update,不存在就insert
33.
让TextView滑动
1.在xml布局文件中,加上这一句 android:scrollbars = "vertical"
2.再在代码中加上,yourTextView.setMovementMethod(new ScrollingMovementMethod())
34.
Android中Activity的四种启动方式:
1.standard
每启动一个新的Activity,它就会在返回栈中入栈,并出入栈顶的位置.
对于使用standard启动的Activity,系统不会在乎这个Activity是否已经在返回栈中存在
2.singleTop
在启动Activity时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它,不会再创建新的活动实例
3.singleTask
每次启动一个Activity时系统会首先在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例
并且把在这个Activity之上的所有Activity统统出栈
如果没有发现就会创建一个新的Activity实例
4.singleInstance
当Activity的启动模式为singleInstance时,系统会启用一个新的返回栈来管理这个活动
35.有关adpter中异步设定imagview图片混乱的问题
if (convertView == null) {
convertView = inflater.inflate(R.layout.login_identity_grid_item, null);
mViewHolder = new ViewHolder();
convertView.setTag(mViewHolder);
}
final ViewHolder mViewHolder = (ViewHolder) convertView.getTag();
convertView = inflater.inflate(R.layout.login_identity_grid_item, null);
mViewHolder = new ViewHolder();
convertView.setTag(mViewHolder);
}
final ViewHolder mViewHolder = (ViewHolder) convertView.getTag();
36.延时操作