因此,对于Android O,如果您希望每小时收到的不仅仅是一些位置更新,则需要将您的服务作为前台服务运行.
我注意到用于启动前台服务的旧方法似乎确实在O上工作.即
startForeground(NOTIFICATION_ID, getNotification());
Run Code Online (Sandbox Code Playgroud)
根据此处的行为更改指南:https: //developer.android.com/preview/behavior-changes.html
NotificationManager.startServiceInForeground()方法启动前台服务.启动前台服务的旧方法不再有效.
虽然新方法仅在定位O时有效,但似乎旧方法似乎仍适用于O设备,无论是否针对O.
编辑 包括示例:
Google示例项目LocationUpdatesForegroundService实际上有一个工作示例,您可以在其中直接查看问题. https://github.com/googlesamples/android-play-location/tree/master/LocationUpdatesForegroundService
无论是针对API级别25进行定位和编译,还是针对O进行编译(如此处所示:https : //developer.android.com/preview/migration.html#uya),startForeground方法似乎都没有问题.
所以,重现:
服务正在前台运行(通知阴影中的图标显示).即使在运行O的设备上,位置更新也会按预期(每10秒)完成.我在这里缺少什么?
我熟悉tkDiff和WinMerge等工具,并且知道如何查看两个文件之间的区别.
我要做的是在一个文件中生成一个不存在于另一个文件中的元素的报告.
例如:
File1包含:
apple
cool
dude
flan
Run Code Online (Sandbox Code Playgroud)
File2包含:
apple
ball
cool
dude
elephant
Run Code Online (Sandbox Code Playgroud)
我想生成一份包含以下内容的报告:
ball
elephant
Run Code Online (Sandbox Code Playgroud)
或者,更好的是,这样的报告:
+ball
+elephant
-flan
Run Code Online (Sandbox Code Playgroud)
有人知道可以做到这一点的工具吗?最好使用命令行选项.
WinMerge中的报告功能并不是我想要的,但没有命令行选项来做到这一点(据我所知).
提前致谢.
如何配置 SSH 密钥以与 SourceTree、终端以及 Windows 上的 IntelliJ 和 Eclipse 等 IDE 一起使用?
这让我抓狂了一段时间,经过大量研究和反复试验,我最终得出了以下结论。我想我会在这里分享,以供我自己和其他人将来参考。
如果我有一个看起来像这样的(简化的)类:
class MyManager @JvmOverloads constructor(/*constructor args*/) : MyManagerInterface {
@Inject
lateinit var myLogger: MyLogger
init {
component = DaggerLoggerComponent.builder()
.loggerModule(LoggerModule(internalLogger))
.build()
component.inject(this)
}
companion object {
lateinit var component: RemoteLoggerComponent
private set
}
}
Run Code Online (Sandbox Code Playgroud)
在单元测试时,我到底如何模拟伴随对象中的组件?
我已经使用 Mockito、MockK 等尝试了各种技巧,但遇到了一些障碍。
CUT(被测类)是另一个类,它使用 MyManager 组件在其 init 块中注入其依赖项,如下所示:
init {
if(applicationContext == null) {
throw IllegalStateException("Application Context must not be null")
} else {
MyManager.component.inject(this)
}
}
Run Code Online (Sandbox Code Playgroud)
基本上,如果注入什么都不做,我会很高兴,因为我可以为了测试而在外部设置依赖项。
所有帮助表示赞赏。包括您是否认为我编码错误。我对 Kotlin 和 Dagger 比较陌生。谢谢。
我一直有一个非常严重的生产问题,我希望有人可以提供帮助.
我正在使用Spring 3.1.0并且对它的功能印象深刻.
在开发过程中,一切都很好.不幸的是,在部署到生产时,我们遇到了一些问题.
我们正在使PermGen空间出现内存错误.
在我们的开发/测试框中,我们有以下设置:-Xms2048m -Xmx2048m -XX:PermSize = 512m -XX:MaxPermSize = 1024m(请注意我们不确定这些设置是否正确)
在我们的生产箱中,我们有以下设置:-Xms3056m -Xmx3056m -XX:PermSize = 128m -XX:MaxPermSize = 512m(再次请注意,我们不确定这些设置是否正确)
不可否认,生产环境完全不同,因为它上面运行的应用程序更多.
根据我在这里读到的,我们应该将max和min设置为相同的值,并将maxpermsize设置为其中任何一个的1/4.
我已经在许多地方(包括这里)读过,由于泄漏而重启服务器可能是不可避免的.有谁知道这是真的吗?
另外,有人知道Spring框架通常需要多少内存?部署应用程序后,我发现使用的内存量增加了大约345 MB.我知道在启动应用程序时需要实例化一些类,但这似乎很多.我有不正确的设置吗?我们目前只使用Spring JDBC.有没有办法将框架仅限于这些类?
我们的代码库相当大,我理解JAXB会导致严重的问题.
我见过使用的建议
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled
Run Code Online (Sandbox Code Playgroud)
所以,总结一下:
我们的设置是否正确,如果没有,它们应该是什么?
Spring框架不时会不时地重启服务器吗?
Spring应该占用多少内存?有没有办法限制使用的类?
使用有任何可能的副作用-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
吗?
任何和所有的帮助将不胜感激.提前致谢.
堆栈跟踪在下面(还有更多,但我不能全部发布):
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]: Constructor threw exception; nested …
Run Code Online (Sandbox Code Playgroud) 菜单系统应该使用以下语句根据给定的延迟进行扩展和折叠(o_item.getprop('hide_delay')
返回200并o_item.getprop('expd_delay')
返回0):
this.o_showtimer = setTimeout('A_MENUS['+ this.n_id +'].expand(' + n_id + ');',
o_item.getprop('expd_delay'));
Run Code Online (Sandbox Code Playgroud)
和
this.o_hidetimer = setTimeout('A_MENUS['+ this.n_id +'].collapse();',
o_item.getprop('hide_delay'));
Run Code Online (Sandbox Code Playgroud)
我尝试将第一个参数的代码放入单独的函数中,并将这些函数作为setTimeout的第一个参数调用,如下所示:
this.o_showtimer = setTimeout( expandItem(this.n_id, n_id),
o_item.getprop('expd_delay'));
Run Code Online (Sandbox Code Playgroud)
Firebug产生以下错误消息:
useless setTimeout call (missing quotes around argument?)
Run Code Online (Sandbox Code Playgroud)
崩溃没有延迟.
我把参数放在引号中(尽管这里推荐),像这样:
this.o_showtimer = setTimeout( "expandItem(this.n_id, n_id)",
o_item.getprop('expd_delay'));
Run Code Online (Sandbox Code Playgroud)
但这没用.似乎没有任何事情发生,并且在代码中抛出一些console.log()消息证实了这一点.
this.o_showtimer = setTimeout( function() { expandItem(this.n_id, n_id); },
o_item.getprop('expd_delay'));
Run Code Online (Sandbox Code Playgroud)
但这也行不通.它在IE中产生了不良结果(没有折叠的项目与以前一样)并且在Firefox中没有发生任何事情(在expandItem和collapseItem函数中放置console.log()语句确认它们没有被调用).
我甚至试过做以下事情:
this.o_hidetimer = setTimeout( function() { alert('test'); },
o_item.getprop('hide_delay'));
Run Code Online (Sandbox Code Playgroud)
那甚至都没有用!似乎有一些调用匿名函数的东西.
发现的setTimeout的值赋值给一个变量其他比this.o_showtimer制成的setTimeout火的左参数.必须与为此分配内容有关.
如果我这样做:
var o_showtimer = …
Run Code Online (Sandbox Code Playgroud) 可以在此处找到包含用于此问题的代码的Github仓库:https: //github.com/thenewmr/UnitTestCoverageExample
我们一直在努力通过正确生成的Jacoco获取代码覆盖率报告.
我们遵循了互联网上的各种指南,包括这个由帕特里克·麦克拉伦,他挂在他的回答这个问题.
我们还看了关于堆栈溢出的各种问题,但到目前为止还没有快乐.
这是我们到目前为止所用的内容(以子弹点的形式,以免使这个问题太长而无法阅读):
testCoverageEnabled = true
到调试闭包创建了一个名为"createDebugCoverageReport"的任务运行此任务:
现在,如果我们添加以下内容:
apply plugin: 'jacoco'
//specify which directories should be examined by jacoco
def coverageSourceDirs = [
'src/main/java'
]
task jacocoTestReport(type:JacocoReport, dependsOn: "testDebug") {
group = "Reporting"
description = "Generate Jacoco coverage reports"
classDirectories = fileTree(
dir: 'build/intermediates/classes/debug',
excludes: ['**/R.class',
'**/R$*.class',
'**/*$ViewInjector*.*',
'**/BuildConfig.*',
'**/Manifest*.*']
)
additionalSourceDirs = files(coverageSourceDirs)
sourceDirectories = files(coverageSourceDirs)
executionData = files('build/jacoco/testDebug.exec')
reports { …
Run Code Online (Sandbox Code Playgroud)我对Oracle SQL很陌生(尽管我编写了一些SQL)并且在函数中嵌入一个简单的SELECT语句时遇到了麻烦.感觉像SQL ABC,但我似乎无法得到它:(
我想我正在使用PL-SQL
这是我到目前为止所拥有的:
create or replace FUNCTION GET_GROUP_BY_ID RETURN VARCHAR2
AS my_result
BEGIN
SELECT fav_group.name
INTO my_result
FROM fav_group
WHERE fav_group.id = 12345
RETURN my_result;
END GET_GROUP_BY_ID;
Run Code Online (Sandbox Code Playgroud)
正如我所说,我通过查看谷歌上的代码示例尝试了很多上述代码的变体,但似乎无法正确.
我在Oracle中有以下奇怪的问题
(请记住,我在SQL方面经验不足,在Oracle中经验较少).
如果我这样做:
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI') FROM dual
Run Code Online (Sandbox Code Playgroud)
我明白了:2010-12-02 18:39
一切都很好.
但是,如果我这样做:
UPDATE favorite_item
SET favorite_item.last_used_date = TO_DATE(sysdate, 'YYYY-MM-DD HH24:MI')
WHERE favorite_item.favorite_item_id = 1
Run Code Online (Sandbox Code Playgroud)
我在我的数据库中得到了这个:10-DEC-02
这是2002年12月10日哪个不正确
如果我这样做确认:
SELECT TO_CHAR(favorite_item.last_used_date, 'YYYY-MM-DD HH24:MI') AS last_used_date
FROM favorite_item
WHERE favorite_item.favorite_item_id = 1
Run Code Online (Sandbox Code Playgroud)
我明白了:0002-12-10 00:00
哪个是完全错误的.
我究竟做错了什么?我觉得日期设置不正常.
在此先感谢您的帮助.
在Java和Android中,我们可以这样做:
public static MyApplication extends Application {
private static Context appContext;
public void onCreate() {
appContext = this;
}
public static Context getAppContext() {
return appContext;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,在其他地方,我们可以这样做:
appContext = MyApplication.getAppContext();
Run Code Online (Sandbox Code Playgroud)
我们如何在Kotlin做到这一点?过去一小时左右,我一直在围着圈子走.
提前致谢.
//编辑也许我应该更清楚.我的意思是我们如何在Kotlin中编写以上内容并在Kotlin中使用它.