小编Art*_*ans的帖子

2小时后,Android Oreo上的后台位置更新将停止

Android 8(Oreo)引入了一些后台执行和位置限制。有两种方法来请求位置更新-通过用于前台请求的循环程序和通过用于后台请求的未决意图(即BroadcastReceiver)。

如果您的应用程序在后台运行,则位置系统服务每小时仅会几次为您的应用程序计算一个新位置。

问题:当应用程序进入后台模式时,我会收到大约2个小时的位置更新,然后直到我再次真正打开该应用程序后才收到位置更新。我的LocationRequest设置未指定任何到期时间,因此,我希望可以无限期地接收位置更新。

val locationRequest =  {
        val mLocationRequest = LocationRequest()
        mLocationRequest.interval = 4.minutes()
        mLocationRequest.priority = LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY
        mLocationRequest.maxWaitTime = 10.minutes()
        mLocationRequest.fastestInterval = 30.seconds()
        mLocationRequest
    }()

val intent = Intent(this, BackgroundLocationUpdatesReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
LocationServices.getFusedLocationProviderClient(mContext).requestLocationUpdates(locationRequest, pendingIntent)
Run Code Online (Sandbox Code Playgroud)

我正在考虑对此进行一些电池优化(例如,Android Doze或OS将应用置于待机模式),但是其他应用正在发送通知,因此,它不在Doze中,并且应用处于待机状态也没关系通过PendingIntent发送到BroadcastReceiver。

android google-location-services android-8.0-oreo

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

Python中的隐式转换

例如,如果我想以下列方式对对象应用数学运算:

class A(object):
     def __init__(self, value):
         self.value = value

     def __repr__(self):
         return value

assert(A(1) + A(2) == 3)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: TypeError: unsupported operand type(s) for +: 'A' and 'A'

是否可以将对象评估为基元,以便我可以对它们应用简单的操作?同样你怎么可以用implicit conversionsScala.

python

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

stopPropagation似乎不起作用

我正在尝试在具有click事件的DIV块内部实现链接.

如果用户点击链接,我希望外部DIV点击事件不会运行.

我的链接看起来像:

<a href="javascript: openVideo('videoID', this, event); " >Watch the video</a>
Run Code Online (Sandbox Code Playgroud)

和javascript看起来像:

 function openVideo(video, object, event) {

    $(object).html($(object).html()+"<iframe width='360' height='315' src='http://www.youtube.com/embed/"+video+"' frameborder='0' allowfullscreen></iframe>");

    event.stopPropagation();
 }
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我点击链接时,它会执行外部DIV代码.并显示与stopPropogation方法相关的错误:

Uncaught TypeError: Cannot call method 'stopPropagation' of undefined 
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

javascript javascript-events

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

如何在iOS中获取图片的绝对位置?

目前,我的视图中有一帧图像。我想获得图像的绝对位置。

通过使用image.frame.origin.x我可以获得相对于图像所在帧的位置。例如,如果框架在底部,我应该得到一个较大的x和y。但是我收到0和0,因为图像恰好位于框架的顶部和左侧边框的旁边。

ios

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

在switch case中重新实例化变量

为什么我不能在每个具有相同名称的情况下创建变量.例如,从下面的代码中,case 3它会抱怨String name已经存在 - 但为什么会这样?Case 1从来没有,永远不会被称为.

我不想从中提取定义switch-case.那么为什么使用if语句可以在每种情况下定义相同的名称,但在switch-case其中却没有?

这是一个带有switch case的简单Java代码:

int type = 3;

switch (type) {
    case 1:
        String name = (String) respone.get("name");
        user.setName(name);
        break;
    case 2:
        String surname = (String) respone.get("surname");
        user.setSurname(surname);
        break;
    case 3:
        String name = (String) respone.get("name");
        user.clearName(name);
        break;
    default:
        ...
}
Run Code Online (Sandbox Code Playgroud)

java switch-statement

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

如何在Android中没有绝对布局的情况下将图像放在一起?

基本上这个标题不言而喻.我想把元素放在不同的元素之上.我可以使用绝对布局,但据说它已被弃用.

还有其他办法吗?如果不是,为什么他们会弃用AbsoluteLayout?

android android-layout

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

SCRIPT5039:使用IE9重新声明const属性

我正在IE浏览器中优化我的网站.除IE9外,一切正常.

我有一个类似于这个的功能:

 var history = new Array();


 function loadPage(page, parameters) {

    $(".dynamic_load").fadeOut(400, function(){

    $(this).fadeIn(400).html("loading").load(page, parameters,
    function(response){
    $(".dynamic_load").html(response).show();  });

                if (history.length > 5) {
                    history.shift();
                } 
                history.push(page); 

                                          });

 }
Run Code Online (Sandbox Code Playgroud)

我收到错误SCRIPT5039:const属性的重新声明,表示在线

 var history = new Array();
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我没有在其他任何地方宣布它.它只是一个全局数组.

javascript internet-explorer-9

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

在WHERE原因中组合两个字符串记录

我有两列名字姓氏.我想创建一个搜索查询,如果用户写下姓名或姓氏,则会找到该人.

目前我有

    SELECT name, surname, id FROM users WHERE 
    (name LIKE '%".$term."%' || surname LIKE
    '%".$term."%')  AND position='0' LIMIT 5
Run Code Online (Sandbox Code Playgroud)

假设我有一位用户John Lemon.如果我写约翰或我写柠檬,查询会找到他.但如果我写约翰柠檬,它什么都找不到.

是否可以使用类似于的语法:

 SELECT name, surname, id FROM users WHERE (
  name+' '+surname LIKE
 '%".$term."%')  AND position='0' LIMIT 5
Run Code Online (Sandbox Code Playgroud)

php mysql database

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

为什么 Scala 匹配优于 if 语句?

在Twitter 的Effective Scala文章中,他们说:

使用返回来澄清和增强可读性,但不像你在命令式语言中那样;避免使用它们来返回计算结果。代替

def suffix(i: Int) = {
  if      (i == 1) return "st"
  else if (i == 2) return "nd"
  else if (i == 3) return "rd"
  else             return "th"
}
Run Code Online (Sandbox Code Playgroud)

更喜欢:

def suffix(i: Int) =
  if      (i == 1) "st"
  else if (i == 2) "nd"
  else if (i == 3) "rd"
  else             "th"
Run Code Online (Sandbox Code Playgroud)

但使用匹配表达式优于以下任一种:

def suffix(i: Int) = i match {
  case 1 => "st"
  case 2 => "nd"
  case 3 => "rd"
  case …
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

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

根据 Scala 中的可选属性过滤列表

想象一下我有以下列表,其中Tuple第二个参数是可选的

List(Tuple("FullName", Some(1)), Tuple("FullName", None))
Run Code Online (Sandbox Code Playgroud)

获得以下结果的最干净的方法是什么?

List(Tuple("FullName", 1)) 
Run Code Online (Sandbox Code Playgroud)

我可以尝试

list.filter(_._2.isDefined).map((_._1, _._2.get))
Run Code Online (Sandbox Code Playgroud)

我需要过滤掉第二个参数所在的所有元组None,然后更改元组类型以包含已定义的integer而不是option.

我想知道是否有更漂亮的方法来做到这一点?

scala

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

Java 中的 ArrayList 添加/删除回调

是否可以创建回调函数 ArrayList 添加/删除方法。

ArrayList 将包含图像 url,我想在添加/删除新元素后立即运行我的代码(更新 UI)。

java arraylist callback

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