AndroidAnnotations——Reinject NonConfiguration Instance重新注入NonConfiguration 实例

翻译 2013年12月04日 20:39:46

NonConfiguration Instance

Since AndroidAnnotations 2.5


When a configuration change occurs, your activities are usually destroyed and recreated. This behavior is great to reload resources, but you usually need to transfert references to extensive states (loaded bitmaps, network connections, actively running threads...) from the old to new activity instance.
当配置发生改变时,你的activity往往先销毁再重新生成。这样重新加载资源挺好的,但是你通常需要从老的activity实例转移大量状态(加载的位图,网络连接,正在运行的线程……)引用到新的activity实例中。

That's what Activity.onRetainNonConfigurationInstance()) is for (see RetainingAnObject). Using this method requires casting from Object, and can be cumbersome when you have multiple objects.
那就是 Activity.onRetainNonConfigurationInstance()的作用(查看 RetainingAnObject)。使用这个方法需要从 Object类型强制转换,而且当你有多个对象时,这种方法比较累赘。

@NonConfigurationInstance


Annotate your activity fields with @NonConfigurationInstance to retain instances that are intensive to compute, on configuration changes.
在你的activity字段上加注解就可以在配置改变时保留需要密集计算的实例。

public class MyActivity extends Activity {

  @NonConfigurationInstance
  Bitmap someBitmap;

  @NonConfigurationInstance
  @Bean
  MyBackgroundTask myBackgroundTask;

}
Caution: while you can annotate any field, you should never annotate a field that is tied to theActivity, such as a Drawable, an Adapter, a View or any other object that's associated with a Context. If you do, it will leak all the views and resources of the original activity instance. Leaking resources means that your application maintains a hold on them and they cannot be garbage-collected, so lots of memory can be lost.
注意:当你注解这些字段时,千万不要加到那些绑定到Activity的字段上,比如Drawable AdapterView 或者其他与 Context有联系的对象。

This caution doesn't apply to beans annotated with @Bean, because AndroidAnnotations automatically takes care of rebinding their context.这个警告不适用于加了 @Bean注解的beans,因为AA会自动照看好并重新绑定它们的context。

相关文章推荐

AndroidAnnotations——Injecting Views视图注入

Injecting Views视图注入 Since AndroidAnnotations 1.0 @ViewById The @ViewById annota...

AndroidAnnotations——Injecting project Resources注入项目资源

Resources Since AndroidAnnotations 1.0 All @XXXRes annotations indicate that an ac...

Swift编程语言学习12 ——实例方法(Instance Methods)和类型方法(Type Methods)

方法是与某些特定类型相关联的函数。类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Obje...
  • zpf8861
  • zpf8861
  • 2014年07月25日 08:51
  • 1285

Android快速开发必备——依赖注入(DI)类库的选择ButterKnife,AndroidAnnotations,RoboGuice

现在做移动端开发的开发者,不管是Android和IOS,公司一般都是喜欢那种具备独立开发能力的人,因为APP项目相对较小,有时候一个人完全可以单独胜任一个项目。所以如果我们要能够具备独立开发的能力,快...

Androidannotations——开源框架简介&简易使用准备

Androidannotations是一个Github上的开源框架,使用java注解(依赖注入)的方式,意图使Android开发代码更简洁。 下载地址:https://github.com/exci...

AndroidAnnotations——BackgroundTasksAndActivityBinding后台任务和activity绑定

BackgroundTasksAndActivityBinding Since AndroidAnnotations 2.5 Like an AsyncTask, @Background...

AndroidAnnotations——SeekBarEventsSeekBar事件

SeekBarEvents Since AndroidAnnotations 2.7 You can bind methods to handle spec...

AndroidAnnotations——Enhance custom views 优化自定义组件

Enhance custom views 优化自定义组件 @EView and @EViewGroup are the annotations to use if you want to c...

AndroidAnnotations——Adapters and lists 适配器和列表

Adapters and lists This is just a simple demonstration of how you could handle Adapters and Ada...

Androidannotations框架使用(二)——(AA框架简单使用)

过去我们在使用"小米+步枪"(findViewById)的时代,一个普通Activity里面至少有10行都是findViewById,更不用提稍微复杂的页面啦。如果是重构之前的老项目的任务,理清业务逻...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:AndroidAnnotations——Reinject NonConfiguration Instance重新注入NonConfiguration 实例
举报原因:
原因补充:

(最多只允许输入30个字)