受ButterKnife启发。如果有参数注入的这样一个功能是很有用?
android大部分使用Activity来作为模块的中心。所以这次的这个功能我作为Activity辅助功能为目标来开发这个功能
在Activity初始化时将数据注入到参数中,这些数据可以是来自Intent,File,assets,SharedPreferences甚至数据库中,这样我们可以不用关心数据来自哪里,在初始化的时候都已经准备好了。
类似这样的写法
@LocalData(ARG_ID) //不指定from,默认获取父Activity传递的数据,等比getIntent long mId; @LocalData(ARG_NAME) //不指定from,默认获取父Activity传递的数据,等比getIntent String mName; @LocalData(value = "detail",from = LocalData.GiverType.ASSETS) //来自Assets里路径为detail的文件 String mDetail; @LocalData(value = "1",from = LocalData.GiverType.DATABASE) //来自数据库Book表id为1的数据 Book mBook;
假设有一些数据过大,或不一定用的到。你可能不想在初始化的时候加载它们,那么可以以“触发数据”来延迟加载这些数据。“触发数据”是根据某view被点击或者其他类似事件的时候才被从其他位置加载数据。这些触发数据将会临时的保存起来直至Activity结束
/** * 当点击cover视图时加载外存储根目录下algorithms.jpg数据,并且保存在这个Activity之中直到Activity销毁 * @param view * @param coverData */ @Bind(R.id.cover) @LocalData(value = "algorithms.jpg",from = LocalData.GiverType.FILE) //来自外部根存储中名为algorithms.jpg的文件 private void loadCover(View view,byte[] coverData){ ((ImageView)view).setImageBitmap(BitmapFactory.decodeByteArray(coverData,0,coverData.length)); }效果