对于其它几个基本方法就不那么常用了,为了更好地编程使用这些方法,在此集中收集整理一下各方法调用的时机和作用:
init:方法
init方法中初始化ViewController本身
loadView:方法
如果手工维护views,必须重载重写该方法。
loadView和IB构建view
在视图加载后被调用:
如果是从nib视图页面输出,他将会在视图设置好后后被调用。
在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引
viewDidUnload:方法
内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式
在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等 release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)
viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象
viewDidUnload和dealloc方法没有关联,dealloc还是继续做它该做的事情
viewDidAppear: Called when the view has been fully transitioned onto the screen. Default does nothing视图已完全过渡到屏幕上时调用
viewWillDisappear:Called when the view is dismissed, covered or otherwise hidden. Default does nothing视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
viewDidDisappear:Called after the view was dismissed, covered or otherwise hidden. Default does nothing视图被驳回后调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
转自 http://blog.sina.com.cn/s/blog_489ab04e0100wtoz.html
参考http://stackoverflow.com/questions/3506319/android-linearlayout-with-color-resource-what-am-i-doing-wrong
在开发中需要列表的及时刷新,刚开始每次都是重新查询数据再渲染列表,可以这样的话速度十分慢,后来查了一下,发现使用ContentObserver可以实现这种效果。以下是具体代码:
class MyObserver extends ContentObserver { private Cursor cursor = null; public MyObserver(Handler handler) { super(handler); } @Override public boolean deliverSelfNotifications() { return super.deliverSelfNotifications(); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); cursor = managedQuery(Uri.parse("content://sms"), new String[] {"_id","address","body","date"} , null,null,"date asc"); //声明要监听的数据对象 mca.notifyDataSetChanged(); //如果数据发生改变,刷新与控件绑定的数据,重新查询数据 } }
其中mca是我自定义的一个继承自CursorAdapter的数据适配器类。