使用AndroidAnnotations时@Background和屏幕旋转,如何确保收到回调?

使用AndroidAnnotations时@Background和屏幕旋转,如何确保收到回调?,第1张

概述使用@Background注释时,我们开始一个新线程.如果我们 当这个线程正在执行旋转屏幕的位置时,我们会 然后失去该线程的回调或如何处理?同 装载机这是在屏幕后面排序,所以我们没有 担心我们使用时经常发生的问题 异步任务. 但@Background注释如何解决这个问题呢? 首先,当你使用@Background注释时,代码在一个单独的线程上执行,但这并不一定意味着将启动一个新的线程,因为我们使用一 使用@Background注释时,我们开始一个新线程.如果我们
当这个线程正在执行旋转屏幕的位置时,我们会
然后失去该线程的回调或如何处理?同
装载机这是在屏幕后面排序,所以我们没有
担心我们使用时经常发生的问题
异步任务.

但@Background注释如何解决这个问题呢?

解决方法 首先,当你使用@Background注释时,代码在一个单独的线程上执行,但这并不一定意味着将启动一个新的线程,因为我们使用一个共同的线程池(可以被替换)所有@Background方法.

与AsyncTask一样,@ Background不会处理您的活动的任何生命周期更改.因此,如果您调用@Background方法然后旋转屏幕,那么无论如何,都会在调用它的实例上执行@Background代码.如果将@Background置于属于该活动的方法上,并依次调用@UiThread方法,则可能会在错误的活动实例上调用@UiThread方法(如果发生配置更改).

在Android中,在Loaders之前,处理它的常用方法是使用AsyncTask,在onRetainNonConfigurationInstance()中保留对这些任务的引用,并在配置更改后将它们重新绑定到新活动.

在最新版本中,AndroIDAnnotations提供@NonConfiguration实例注释,可以与@EBean / @Bean和@Background结合使用以实现相同的效果.

这是一个示例代码(未经过测试,从gmail编写):

@EActivitypublic class MyActivity extends Activity {  // Using @NonConfigurationInstance on a @Bean will automatically update the context ref on configuration changes (if the bean is not a singleton)  @NonConfigurationInstance  @Bean  MyBackgroundTask task;  @Click  voID mybuttonClicked() {    task.doSomethingInBackground();  }  voID showResult(MyResult result) {    // do something with result  }}@EBeanpublic voID MyBackgroundTask {  @RootContext  MyActivity activity;  @Background  voID doSomethingInBackground() {      // do something     MyResult result = XXX;      updateUI(result);  }  // Notice that we manipulate the activity ref only from the UI thread  @UiThread  voID updateUI(MyResult result) {    activity.showResult(result);  }}

我认为我们可以提供更好的解决方案,但是有很多不同的用例,我们需要考虑所有这些.所以现在,@ Background有一个非常简单的行为,我不想改变它.但是,我们可以引入具有高级“线程生命周期”行为的新注释.

Thanx到“PIErre-Yves Ricau”通过Googlegroup为androIDannotations提供这个答案.希望这会帮助那些可能遇到类似问题的人.

总结

以上是内存溢出为你收集整理的使用AndroidAnnotations时@Background和屏幕旋转,如何确保收到回调?全部内容,希望文章能够帮你解决使用AndroidAnnotations时@Background和屏幕旋转,如何确保收到回调?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1128996.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存