我试图围绕Dagger 2中的范围,特别是范围图的生命周期.如何创建一个在离开示波器时将被清理的组件.
对于Android应用程序,使用Dagger 1.x,您通常在应用程序级别具有根范围,您可以扩展该范围以在活动级别创建子范围.
public class MyActivity {
private ObjectGraph mGraph;
public void onCreate() {
mGraph = ((MyApp) getApplicationContext())
.getObjectGraph()
.plus(new ActivityModule())
.inject(this);
}
public void onDestroy() {
mGraph = null;
}
}
Run Code Online (Sandbox Code Playgroud)
只要您保留对它的引用,子范围就存在,在这种情况下,它是您的Activity的生命周期.删除onDestroy中的引用可确保范围图可以自由地进行垃圾回收.
编辑
杰西威尔逊最近发布了一个mea culpa
Dagger 1.0严重搞砸了它的范围名称...... @Singleton注释用于根图和自定义图形,因此弄清楚事物的实际范围是很棘手的.
我读过/听过的其他一切都指向Dagger 2改进了范围的工作方式,但我很难理解其中的差异.根据@Kirill Boyarshinov在下面的评论,组件或依赖关系的生命周期仍然像往常一样通过具体的引用来确定.那么Dagger 1.x和2.0范围之间的差异纯粹是语义清晰度的问题吗?
依赖性是否是@Singleton.根图和子图中的依赖性同样如此,导致依赖关系绑定到哪个图形的模糊性(参见In Dagger是缓存的子图中的单例,或者当新的活动子图时它们总是被重新创建)是构造?)
自定义范围允许您创建语义清晰的范围,但在功能上等同于@Singleton在Dagger 1.x中应用.
// Application level
@Singleton
@Component( modules = MyAppModule.class )
public interface MyAppComponent {
void inject(Application app);
}
@Module
public class MyAppModule { …Run Code Online (Sandbox Code Playgroud) 标题几乎总结了它.
外部样式表具有以下代码:
td.EvenRow a{
display: none !important;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过使用:
element.style.display = "inline";
Run Code Online (Sandbox Code Playgroud)
和
element.style.display = "inline !important";
Run Code Online (Sandbox Code Playgroud)
但都不起作用.是否可以使用javascript覆盖!important样式.
如果这会产生影响,那么这就是一个关键的扩展.
我正在建立一个非常小的MySQL数据库,存储,名字,姓氏,电子邮件和电话号码,我正在努力为每个字段找到"完美"的数据类型.我知道没有一个完美的答案,但必须有一些常见的常用惯例,例如这些.例如,我已经确定一个未格式化的美国电话号码太大而无法存储为unsigned int,它必须至少是一个bigint.
因为我相信其他人可能会觉得这很有用,我不想把我的问题限制在我上面提到的字段中.
哪些数据类型适用于常见数据库字段?电话号码,电子邮件和地址等字段?
django中filter和exclude之间有区别吗?如果我有
self.get_query_set().filter(modelField=x)
Run Code Online (Sandbox Code Playgroud)
我想添加另一个标准,下面两行代码之间有什么有意义的区别吗?
self.get_query_set().filter(user__isnull=False, modelField=x)
self.get_query_set().filter(modelField=x).exclude(user__isnull=True)
Run Code Online (Sandbox Code Playgroud)
是一种被认为是更好的做法还是在功能和性能方面都是一样的?
我正在尝试设置一个网站和webjob,但每次我尝试独立于网站发布webjob时都会出错(即Publish as Azure WebJob从上下文菜单中选择)
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(4270,5):错误:'MyWebJob.Models.MyDataEntities-Web.config连接字符串'参数不能为null或为空.
C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets(4270,5):错误:'MyWebJob.Models.MoreDataEntities-Web.config连接字符串'参数不能为null或为空.
部署WebJob有两种选择
当我将我的webjob链接到一个网站项目时,它会在网站上部署而不会出错.但是,当我尝试独立部署它时,我在控制台和错误列表中出现上述错误,但仍然部署了webjob.
如何独立部署我的webjob并摆脱这种持久的"错误"?
我刚刚在我的网站上实现了列表小部件:https://dev.twitter.com/docs/embedded-timelines
我只是想将背景颜色从白色覆盖到透明.由于它是嵌入式小部件,我无法直接编辑它.任何人都可以帮助我吗?
调用此方法:
public HttpResponseMessage PostProduct(Product item)
{
item = repository.Add(item);
var response = this.Request.CreateResponse<Product>CreateResponse(HttpStatusCode.Created, item);
string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
response.Headers.Location = new Uri(uri);
return response;
}
Run Code Online (Sandbox Code Playgroud)
导致编译时错误:
'System.Web.HttpRequestBase' does not contain a definition for 'CreateResponse' and the
best extension method overload 'System.Net.Http.HttpRequestMessageExtensions.CreateResponse<T>
(System.Net.Http.HttpRequestMessage, System.Net.HttpStatusCode, T)' has some invalid arguments.
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我正在尝试创建一个android库,moduleD,它取决于另一个库模块,而后者依赖于两个库模块.一切似乎都很好,但是ClassNotFoundException当我尝试在应用程序中使用库时,我得到了一个.
MyLibrary/
+-- moduleA
+-- src/main/java/
+-- com/example/a
+-- moduleB
+-- src/main/java/
+-- com/example/b
+-- moduleC
+-- src/main/java/
+-- com/example/b
+-- com/example/c
`-- MyMissingClass.java <-- MISSING
+-- moduleD
+-- src/main/java/
+-- com/example/b
Run Code Online (Sandbox Code Playgroud)
build.gradle(模块C)
dependencies {
compile project(':moduleA')
compile project(':moduleB')
}
Run Code Online (Sandbox Code Playgroud)
build.gradle(模块D)
dependencies {
compile project(':moduleC')
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我调用ModuleD调用Module
为了完整起见,我在本地引用了最终的aars,但我不认为这是问题所在.在moduleD中解压缩classes.jar,我可以看到moduleD的类文件,但不能看到MyMissingClass.
build.gradle(在单独的应用程序项目中)
repositories {
...
flatDir {
dirs 'libs'
}
}
dependencies {
compile(name:'moduleB', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)
[1]:如何在android库gradle项目中包含依赖项? [2]:如何发送具有远程依赖项(gradle)的Android库(aar)?
build.gradle(应用程序)
dependencies { …Run Code Online (Sandbox Code Playgroud) 我根据 Android 文档编写了一个基本的绑定服务,但 LeakCanary 告诉我该服务正在泄漏。
class LocalService : Service() {
private val binder = LocalBinder()
private val generator = Random()
val randomNumber: Int
get() = generator.nextInt(100)
inner class LocalBinder : Binder() {
fun getService(): LocalService = this@LocalService
}
override fun onBind(intent: Intent): IBinder {
return binder
}
override fun onDestroy() {
super.onDestroy()
LeakSentry.refWatcher.watch(this) // Only modification is to add LeakCanary
}
}
Run Code Online (Sandbox Code Playgroud)
如果我从一个活动绑定到服务如下,LeakCanary 检测到服务已经泄漏
class MainActivity: Activity() {
private var service: LocalService? …Run Code Online (Sandbox Code Playgroud) 我有一个简单的c ++类,intHolder,它只包含一个int.它也可以添加到int,它可以工作,或者将自己添加到另一个intHolder中包含的另一个int,这不起作用.这与我在Java中遇到的情况完全不同.这是怎么回事?
class intHolder{
private:
int i;
public:
intHolder(int myInt){i = myInt;}
void addToInt(int inc){ i = i + inc;}
void printInt(){cout << i << endl;}
void addToOtherInt(intHolder other){other.addToInt(i);}
};
Run Code Online (Sandbox Code Playgroud)
主要方法
int main () {
intHolder ih1(1);
ih1.printInt();//Should be 1, is 1
ih1.addToInt(3);
ih1.printInt();//Should be 4, is 4
intHolder ih2(2);
ih2.printInt();//Should be 2, is 2
ih1.addToOtherInt(ih2);
ih1.printInt();//Should be 4, is 4
ih2.printInt();//Should be 6, is 2
};
Run Code Online (Sandbox Code Playgroud) 更新我的hubot项目后,它不再在Azure上运行.我可以在OS X和Windows上本地运行干净的副本,但在Azure上我收到以下错误
错误无法加载适配器松弛 - 错误:找不到模块'hubot'
在本地,我安装了节点6.9.1和npm 3.10.9.Azure分别使用版本6.9.0和3.10.8.
不幸的是,我还没弄清楚如何收集更多信息,因为节点应用程序似乎没有达到产生任何更详细输出的程度.
该项目和Azure网站最初是在去年创建的,在我更新了npm依赖项和节点版本后开始失败.但是,在恢复到节点4.x和npm 2.x或节点0.10.x或npm 1.x后,我仍然得到相同的错误.
这是我很大程度上未经修改的hubot项目,它可以重现错误.README包含我将其部署到Azure的步骤.
任何见解将不胜感激
的package.json
...
"dependencies": {
"coffee-script": "^1.11.1",
"hubot": "^2.19.0",
"hubot-diagnostics": "0.0.1",
"hubot-google-images": "^0.2.6",
"hubot-google-translate": "^0.2.0",
"hubot-help": "^0.2.0",
"hubot-maps": "0.0.2",
"hubot-pugme": "^0.1.0",
"hubot-rules": "^0.1.1",
"hubot-scripts": "^2.17.2",
"hubot-shipit": "^0.2.0",
"hubot-slack": "^4.2.1"
},
...
Run Code Online (Sandbox Code Playgroud)
hubot在package.json中的依赖项中列出 - 如果不是,它将无法在本地运行.我知道kudu运行npm install --production,所以我确定它是依赖项而不是devDependencies.
Gary Liu - MSFT能够对原因有所了解并提供了一种解决方法,但为什么hubot-slack: 4.+在其他地方运行时不能在Azure上运行?