当使用Dagger时,我发现当我在任何需要它的地方注入它时,我会得到一个单例的多个实例.我已经注释了类和提供方法@Singleton.谁能想到为什么会这样?
编辑:
如果它有帮助,我在Dagger的GitHub(https://github.com/square/dagger/tree/master/examples/android-activity-graphs)中使用与我的应用程序相同的结构作为示例应用程序.我正在尝试在基本活动中使用Singleton,并@Provides在自定义Application类中使用提供的几个第三方类.是因为我在每个活动中加上原始对象图的模块吗?
(PS:我一般都是Dagger和DI的新手,所以如果你能提供解释以便我可以学习,我将不胜感激.谢谢.)
我正在使用IdlingResource同步一些网络相关的任务.我在@Before和@After方法中注册和注销idlingresource .仪器是AndroidJUnitRunner.
基本步骤顺序是:
但实际发生的是,第一个网络请求已经生成,但是没有启动新活动.我有一种感觉,主线程在某处循环,但我无法确定它.
当我执行单个测试(右键单击方法,单击"运行testmethod ..")它可以工作,但是当我尝试在类中执行所有测试方法时,它会失败.
很酷的是即使每个方法都是空的,除了实际进行UI测试的方法之外,它仍然会失败.
类似的问题在这个帖子中,但没有答案:Android上的Espresso 2,中间测试失败,因为未能启动测试中的活动,而以前测试的活动仍然存在
任何帮助将不胜感激.
我正在尝试学习创建自定义视图和组件,并且已经遇到了障碍.我无法使用drawable.draw(canvas)方法在canvas上绘制任何drawable.但是如果我得到位图并使用canvas.drawBitmap()方法绘制它,它就可以工作.
代码中没有任何花哨的东西:
@Override
protected void onDraw(Canvas canvas) {
// drawing bitmap directly works
/*
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(bitmap, 10, 10, paint);
*/
// this doesn't work but mThumb is not null in log
if(mThumb != null) {
canvas.save();
mThumb.draw(canvas);
Log.d("Custom component - ", "mThumb : " + mThumb);
canvas.restore();
}
}
Run Code Online (Sandbox Code Playgroud)
日志显示mThumb变量包含drawable.我是标准的方式:
if(attrs != null) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomView);
color = a.getColor(R.styleable.CustomView_cv_color, color);
thumb = a.getDrawable(R.styleable.CustomView_cv_thumb);
setThumb(thumb);
a.recycle();
}
setColor(color);
Run Code Online (Sandbox Code Playgroud)
自定义视图的xml是:
<me.mycustomview.MyCustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cv_color="@android:color/holo_red_light" …Run Code Online (Sandbox Code Playgroud) 我试图在没有Maven的情况下使用Dagger(仅使用ADT Eclipse)并遇到了这个问题.我尝试在注释处理选项中添加jar,并使用java writer 2.2.1,因为我从Dclipse中学到的示例通过eclipse构建失败,并且"请确保为此模块运行代码生成".但它仍然无效.
任何人都可以指出我做错了什么?