Android开发总结
- 改变适配器Adapter内容时不要在后台线程中,必须在UI线程中处理,这点可以通过Handler传出来解决。
- 尝试Adapter的notifyDataSetChanged()方法,当然主要看你代码的具体情况。
- ActivityGroup对子A的管理是通过Map的方式来管理的,在启动子Activity时,对每个子Activity都分配了一个ID号。这种映射的机制使得我们可以通过ID来获取到子A的实例。当遇到
AlertDialog.Builder builder = new Builder(this);
不显示对话框时,使用AlertDialog.Builder builder = new Builder(this.getParent());
代替,有可能会解决问题。 - Activity、Service实例化时就是一个Loop线程,同时具有本身的MessageQueue,因此可以在其内部定义
Handler handler = new Handler();
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
TODO: + 说明:
如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。
FIXME: + 说明:
如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。
XXX: + 说明:
如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明。 - Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。
- 非常惭愧,现在才发现try{}catch(Exception e){e.printStackTrace();},catch到Exception之后的代码还有可能执行。
- padding是控件内部的距离
margin是控件间的距离
<Button android:text="hello"
android:layout_width="250dip"
android:layout_height="100dip"
android:paddingTop="50dip" 字体距离button上边距50dip
android:layout_marginTop="100dip"> 控件距离上一个控件100dip
</Button>
- // 当向listview中加入headerview或者footviwer时,调用ListView的setAdapter
// 方法会将adapter转化为headerviewlistadapter
HeaderViewListAdapter listAdapter = (HeaderViewListAdapter) listView
.getAdapter();
((BlogStatusAdapter) listAdapter.getWrappedAdapter())
.refresh(refreshAlls);