最近,我与一位同事讨论了如何在Java中转换List为最佳方式,Map以及是否有任何特定的好处.
我想知道最佳转换方法,如果有人能指导我,我会非常感激.
这是一个好方法:
List<Object[]> results;
Map<Integer, String> resultsMap = new HashMap<Integer, String>();
for (Object[] o : results) {
resultsMap.put((Integer) o[0], (String) o[1]);
}
Run Code Online (Sandbox Code Playgroud) 我刚刚安装了Android Studio,并且我开始对一个活动进行编码以进行扩展ActionBarActivity,并显示它已被弃用.那么我如何为我的活动设置一个操作栏呢.此外,入门培训使用ActionBarActivity不引用它的方法已被弃用.
android deprecated android-actionbar android-actionbaractivity
如何检查布尔值是否为空?所以,如果我知道"hideInNav"为空.如何阻止它进一步执行?像下面的东西似乎不起作用,但为什么?
boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
Run Code Online (Sandbox Code Playgroud) 这段代码:
interface Config {
int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)
编译和按我的预期工作.它看起来像是:
interface Config {
public static final int MAX_CONN = 20;
}
Run Code Online (Sandbox Code Playgroud)
对于Java接口中的常量,"public static final"是多余的吗?这对于Java 1.1,1.2,1.3,1.4,...,1.8是否适用,或者是否在Java版本中进行了更改?
手头的问题:我必须创建一个Service连续运行的.这项服务监控5个应用程序说你的手机上安装了5个安卓游戏.此服务需要获取以下信息:1.游戏开启和运行的次数是多少?2.每场比赛的运行时间.
例如:说如果我在我的应用程序中安装了此服务.我让它运行了一个月.我需要在应用程序的屏幕上显示此类信息:
游戏 游戏运行次数游戏 持续时间
第1场比赛共20次,共15小时
游戏2共16次,总共玩25小时
..
..
第5场比赛共10次,共12小时
可能的方法:当应用程序加载时,它会进入内存.注意到系统在应用程序启动时计时.当应用程序结束或放在后台注意时间再次.
所以说如果一个应用程序在晚上9点被带到内存并且在晚上9:30退出到后台,这给了我们30分钟的游戏时间.下次播放应用程序时,持续时间将从存储在某种变量中的上一个播放添加到30,依此类推.每次将应用程序带入内存时,正在播放的计数器应该增加1.因此,给我们一个应用程序播放的次数.
编码:
我Service在Android中根本不知道,因为我从来没有真正研究它们.任何与我手头的问题相关的教程都会非常有用.其次,如果还有另一种方法可以做到这一点.我也想知道.我真的可以使用一些代码片段来启动这个项目.
为什么java常量声明为static?
class Foo{
static final int FII = 2 ;
}
Run Code Online (Sandbox Code Playgroud)
在这个我理解使用final?为什么它必须是静态的?为什么它应该是一个类变量,而不是一个实例变量?
我在Play Console中收到了一些崩溃报告,标题如下:
signal 5 (SIGTRAP), code 1 (TRAP_BRKPT)
webview.apk
Run Code Online (Sandbox Code Playgroud)
以及详细信息:
backtrace:
native: pc 00000000011a1ed4 /system/app/webview/webview.apk
native: pc 00000000011e01f8 /system/app/webview/webview.apk
Run Code Online (Sandbox Code Playgroud)
就是这样,没有更多的信息.
重要的是(a)崩溃的数量非常少,因此我的代码必须基本上是健全的,并且(b)报告全部来自Android 7.0设备.
我怎样才能开始解决可能发生坠机的地方?我可以发布一些代码,但它可能无济于事,因为绝大多数设备都没有窒息,无论如何我只是在寻找一些洞察或提示,以便在哪里进一步查看.我无法在我尝试的任何设备上重现此崩溃.
还有一个类似的问题在这里,还没有答案.
android crash-reports android-7.0-nougat google-play-console
我需要跟踪Android中的应用程序使用情况,例如AppUsage的工作方式(即跟踪应用程序启动的数量,以及使用每个应用程序所花费的时间).我打算做的是记录应用程序启动时的开始时间,然后获取应用程序暂停或停止时的结束时间.在LogCat中,我能够看到Activity的起始日志.我查看了可用的系统广播,我不确定在活动开始时是否有任何广播..基本上,我如何检测活动何时启动?
编辑:此外,Android还有一个内部使用的使用情况统计系统,可以在备件应用程序或*#*#4636#*#*拨打时找到(测试 - >使用情况统计)
每当我尝试查询UsageStatsManager的Usage Stats时,我都可以正确地获取最后一个正在运行的应用程序.但是,如果我下拉状态栏并且有新通知,则最后使用的应用程序(基于UsageStats)将更改为通知的应用程序.结果,我收到前台应用程序已更改的错误警报.
我似乎无法找到过滤那些特定抽奖的方法.有任何想法吗?
现在,我使用以下代码查询前台应用程序.问题仅存在于Marshmallow中(5.X正常工作).
UsageStatsManager mUsageStatsManager = (UsageStatsManager) rotationManager.getSystemService("usagestats");
long time = System.currentTimeMillis();
// We get usage stats for the last 10 seconds
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 2, time);
// Sort the stats by the last time used
if (stats != null) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : stats) {
mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
foregroundApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
}
}
Run Code Online (Sandbox Code Playgroud) 我能够捕获传入的ussd消息,但如何在双卡手机的情况下比较传入的ussd消息?如果我收到一条消息提示,我怎么知道传入的消息是针对哪个SIM卡?