小编gau*_*ain的帖子

queryUsageStats间隔持续时间

我正在使用UsageStatsManager API获取特定时间间隔的使用情况统计信息。如果我使用预定义的时间间隔,例如INTERVAL_DAILY,INTERVAL_WEEKLY,INTERVAL_MONTHLY,INTERVAL_YEARLY,则一切正常。但是,如果我想查看过去2或3个小时的数据,则可以获得整天的今天数据。我曾尝试使用Calendars和System.currentTimeMillis(),但这并没有给我过滤的结果。

日历方式:

Calendar startCalendar = Calendar.getInstance();
startCalendar.add(Calendar.HOUR_OF_DAY, -2);

Calendar endCalendar = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)

并将其传递给queryUsageStats方法,如下所示:

usageList = usm.queryUsageStats(interval, startCalendar.getTimeInMillis(), endCalendar.getTimeInMillis());
Run Code Online (Sandbox Code Playgroud)

间隔为INTERVAL_BEST。

System.currentTimeMillis()方法:

long startTime = System.currentTimeMillis() - 7200*1000 // 7200 seconds i.e. 2 hrs

long endTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

像上面一样将其传递给queryUsageStats:

usageList = usm.queryUsageStats(interval, startTime, endTime);
Run Code Online (Sandbox Code Playgroud)

间隔再次为INTERVAL_BEST。

我想知道是否有可能在此期间(即不到一天)获取数据,因为尚未对INTERVAL_BEST进行适当记录以包含此信息。任何帮助将不胜感激,因为我被困在这个问题上。

android usagestatsmanager

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

尝试的缺点

我一直在研究尝试并检查它们的优点和缺点。由于它们恒定的 O(m) 查找(其中 m 是字符串的长度)和其他优点(例如提供字符串的有序检索和获取公共前缀),它们在许多实际应用中非常有用,例如字典、拼写检查器等。所以,优点对我来说很清楚,但局限性有点令人困惑。

我正在关注此链接:https : //en.wikipedia.org/wiki/Trie

这里列出的缺点是:

  1. 在某些情况下,用于查找数据的尝试可能比哈希表慢,尤其是在硬盘驱动器或其他一些辅助存储设备上直接访问数据时,与主存储器相比,随机访问时间较长。

后续问题- 为什么会有涉及二级存储的场景?不尝试也应该存储在主内存中。如果它们存储在二级存储中,那么无论如何都没有使用特里,因为磁盘访问总是会导致更多的时间。

  1. 有些尝试可能需要比哈希表更多的空间,因为可能会为搜索字符串中的每个字符分配内存,而不是像大多数哈希表那样为整个条目分配单个内存块。

后续问题:是否因为尝试将包含更多用于将每个字符连接到下一个字符的引用/指针,并且与将其存储为整个字符串相比会消耗更多字节?(我从这里的一个答案中得到了这个原因)。任何人都可以详细说明这一点吗?

我真的很感激这里的一些帮助。谢谢。

trie data-structures

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

生成器模式多个varargs

我正在阅读Joshua Bloch的"Effective Java",在第2项中,他提到了在构造函数中处理几个参数时使用Builder模式的优点.一切都很好,直到我看到传统构造函数和这个模式之间的多个var-args差异.所以,我有一些疑问:

  1. 构建器模式如何允许多个var-args?
  2. 为什么传统的构造函数只允许一个var-arg?(可能是因为如果存在多个var-args会导致歧义,当两者的定义数据类型相同时,但我不确定这是否是正确的原因.)

我在代码中没有使用var-args,但是我知道它们的用途.我仍然无法理解上述陈述背后的原因.任何帮助,将不胜感激.

java variadic-functions builder-pattern effective-java

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

关于inflater.inflate Android文档的困惑

我正在研究这个链接的片段:http://developer.android.com/guide/components/fragments.html

有一段代码给出:

public static class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.example_fragment, container, false);
}
Run Code Online (Sandbox Code Playgroud)

}

我对attachToRoot参数感到困惑,所以我查看了Stack Overflow的一些帮助,并找到了类似问题的好答案.所以我理解的是,如果将其设置为true,则片段将附加到活动的根布局,并从那里派生其布局框架.如果它是假的,它将简单地返回膨胀布局的根,并且像片段的独立视图(从传入的容器中导出布局参数).

现在我在上面的例子中关于attachToRoot的文档中进一步阅读:

一个布尔值,指示在充气期间是否应将膨胀的布局附加到ViewGroup(第二个参数).(在这种情况下,这是错误的,因为系统已经将膨胀的布局插入到容器中 - 传递true会在最终布局中创建冗余视图组.)

我没有得到最后一个括号语句,它说它应该是假的,因为我们已经将布局插入到容器中.在没有attachToRoot为真的情况下,我们已经插入容器是什么意思?如果参数为true,则最终布局如何具有冗余视图组.详细说明这一部分的一个例子将是一个很大的帮助.谢谢.

android android-fragments

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

关于WakefulBroadcastReceiver的困惑

我从这个链接一直在研究WakefulBroadcastReceiver:https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

关于此,我几乎没有什么困惑:

  1. 即使设备处于睡眠模式,此接收器是否确保您将接收广播?(我认为不,它只是在收到广播之后保持设备唤醒,直到调用completeWakefulIntent()为止.)
  2. 该文档说明了在接收者中使用意图服务,并在完成工作后,调用了completeWakefulIntent.

代码:

import android.app.IntentService;
import android.content.Intent;
import android.os.SystemClock;
import android.util.Log;

public class SimpleWakefulService extends IntentService {
    public SimpleWakefulService() {
        super("SimpleWakefulService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // At this point SimpleWakefulReceiver is still holding a wake lock
        // for us.  We can do whatever we need to here and then tell it that
        // it can release the wakelock.  This sample just does some slow work,
        // but more complicated implementations could take …
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-wake-lock

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