例如,setImageResource与setImageDrawable
背景也一样?
那么什么是首选呢?
最佳答案
根据documentationsetImageResource
在ui线程上执行位图读取和解码,这可能导致延迟打嗝。所以如果你问在什么情况下setImageResource
比setImageDrawable
更合适,你的问题会更好。
我的猜测是setImageResource
用于延迟加载图像,而setImageDrawable
用于在视图启动期间通过drawable加载图像。哪一个最适合你可能取决于你是否有更严重的记忆限制;以我的经验,几乎不需要。
并回答为什么您的代码不能工作;这是因为您不能从resourceid 0,this throws an exception as it can't find the resource中执行setImageResource
。由于getDrawable()
是延迟加载,it checks if the resource is 0在创建drawable之前,因此不会抛出异常。
你可以把它重构成setImageResource