方形 – Android中的匕首范围

杰克·沃顿商学院在Devoxx 2013上的演讲,搭建Dagger的 Android应用程序,谈到了为登录用户创建一个Dagger范围.这样的事情听起来真的很干净,我想在我的应用程序中做到这一点.

在谈话中讨论的代码是:

public class LoggedInActivity extends Activity {

    @Inject User user;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_logged_in);

        DaggerScopesApp app = (DaggerScopesApp) getApplication();
        app.getobjectGraph().plus(new UserModule("exampleusername")).inject(this);

        findViewById(R.id.do_something_button).setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(LoggedInActivity.this,user.username + " : " +
                        user.someValue++,Toast.LENGTH_SHORT).show();
            }
        });
    }
}

但是,如果注入的用户被限定为@Singleton,那么属性将在配置更改时消失(因为对象图在onCreate中创建).

解决方案非常简单,您只需执行一次“加”操作,并将新对象图存储在其他位置(也许是应用程序类),但我想知道这是否是一个很好的方法?来自Square的任何人都可以提供您在应用程序中所做的工作的任何见解?你在“登录”图表中没有单例对象吗?

解决方法

The solution is pretty simple,you can just do this “plus” operation once and store the new object graph somewhere else (maybe the application class),but I was wondering if this is a good approach?

是的.登录图的生命周期只要用户登录并且进程正在进行,就需要生存.由于活动的生命周期极短,这不是一个好地方.

我用它作为一个例子,使用他们熟悉的东西来缓解人们的观念.

Can anyone from Square can provide any insight into what you do in your applications?

所有与UI无关的图都由Application类进行管理.通过这一点,我们保证它创建一次,首先创建,只有在进程死机时才消失.

随着用户界面的到来,任何与UI相关(活动范围图,片段图等)都会被覆盖.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...