小编the*_*_mr的帖子

Android O - 旧的启动前台服务仍在运行?

因此,对于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方法似乎都没有问题.

所以,重现:

  1. 按照上一个链接中的说明配置app gradle
  2. 打开应用程序
  3. 请求位置更新
  4. 关闭应用程序(通过后退按钮或主页按钮)

服务正在前台运行(通知阴影中的图标显示).即使在运行O的设备上,位置更新也会按预期(每10秒)完成.我在这里缺少什么?

android location android-8.0-oreo

32
推荐指数
3
解决办法
4万
查看次数

两种文件之间输出差异的方法(最好使用命令行)

我熟悉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中的报告功能并不是我想要的,但没有命令行选项来做到这一点(据我所知).

提前致谢.

comparison diff

27
推荐指数
2
解决办法
5万
查看次数

如何在 Windows 上为 SourceTree、终端和 IDE(例如 IntelliJ 和 Eclipse)配置 SSH 密钥?

如何配置 SSH 密钥以与 SourceTree、终端以及 Windows 上的 IntelliJ 和 Eclipse 等 IDE 一起使用?

这让我抓狂了一段时间,经过大量研究和反复试验,我最终得出了以下结论。我想我会在这里分享,以供我自己和其他人将来参考。

git ssh atlassian-sourcetree

19
推荐指数
2
解决办法
4万
查看次数

Kotlin 单元测试 - 如何模拟 Companion 对象的组件?

如果我有一个看起来像这样的(简化的)类:

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 比较陌生。谢谢。

kotlin mockk

9
推荐指数
1
解决办法
6284
查看次数

Spring PermGen空间问题

我一直有一个非常严重的生产问题,我希望有人可以提供帮助.

我正在使用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)

在这里这里.使用这些参数是否有任何可能的负面影响?

所以,总结一下:

  1. 我们的设置是否正确,如果没有,它们应该是什么?

  2. Spring框架不时会不时地重启服务器吗?

  3. Spring应该占用多少内存?有没有办法限制使用的类?

  4. 使用有任何可能的副作用-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)

memory spring weblogic

6
推荐指数
1
解决办法
4456
查看次数

Firefox中的setTimeout问题

菜单系统应该使用以下语句根据给定的延迟进行扩展和折叠(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)

javascript firefox settimeout

5
推荐指数
1
解决办法
6284
查看次数

Jacoco代码覆盖文件空白导致虚假覆盖报告

可以在此处找到包含用于此问题的代码的Github仓库:https: //github.com/thenewmr/UnitTestCoverageExample

我们一直在努力通过正确生成的Jacoco获取代码覆盖率报告.

我们遵循了互联网上的各种指南,包括这个帕特里克·麦克拉伦,他挂在他的回答这个问题.

我们还看了关于堆栈溢出的各种问题,但到目前为止还没有快乐.

这是我们到目前为止所用的内容(以子弹点的形式,以免使这个问题太长而无法阅读):

  • 添加testCoverageEnabled = true到调试闭包创建了一个名为"createDebugCoverageReport"的任务
  • 运行此任务:

    • 为我们的Android测试生成报告:app/build/outputs/reports/androidTests/connected/index.html,准确报告测试通过和失败等
    • 但是在app/build/outputs/reports/coverage/debug/index.html上的覆盖率报告不准确(0%覆盖率)
    • 它还会在以下位置生成看似空的覆盖率数据:app/build/outputs/code-coverage/connected/coverage.ec
  • 现在,如果我们添加以下内容:

    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)

android unit-testing code-coverage gradle jacoco

4
推荐指数
1
解决办法
1875
查看次数

在Oracle用户定义的函数中编写select语句

我对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)

正如我所说,我通过查看谷歌上的代码示例尝试了很多上述代码的变体,但似乎无法正确.

sql oracle plsql function

2
推荐指数
1
解决办法
2万
查看次数

Oracle日期格式问题

我在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

哪个是完全错误的.

我究竟做错了什么?我觉得日期设置不正常.

在此先感谢您的帮助.

oracle datetime date

1
推荐指数
1
解决办法
5277
查看次数

如何在kotlin中"静态"访问一个类的成员?

在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中使用它.

android kotlin

0
推荐指数
1
解决办法
614
查看次数