假设arraylist被定义为ArrayList<String> arraylist,arraylist.removeAll(arraylist)相当于arraylist.clear()?
如果是这样,我可以假设该clear()方法更有效地清空数组列表吗?
使用中是否有任何警告arraylist.removeAll(arraylist)而不是arraylist.clear()?
除了Integer.parseInt()处理减号(如文件所述),Integer.valueOf()和之间是否还有其他差异Integer.parseInt()?
因为两者都不能解析,为十进制千位分隔符(产生NumberFormatException),有没有一个已经可用的Java方法来做到这一点?
在这个NotePadProvider示例代码中,我注意到作者选择了以下表单:
if (values.containsKey(NoteColumns.CREATED_DATE) == false) {
values.put(NoteColumns.CREATED_DATE, now);
}
Run Code Online (Sandbox Code Playgroud)
过度:
if (!values.containsKey(NoteColumns.CREATED_DATE)) {
values.put(NoteColumns.CREATED_DATE, now);
}
Run Code Online (Sandbox Code Playgroud)
第一种形式在更合乎逻辑的形式上是否有任何优势?
我试图创建一个辅助方法,以一般方式迭代所有Bundle对象.
"通用"我的意思是:
到目前为止,我想出了以下大纲来实现这一目标:
private void bundleToSharedPreferences(Bundle bundle) {
Set<String> keys = bundle.keySet();
for (String key : keys) {
Object o = bundle.get(key);
if (o.getClass().getName().contentEquals("int")) {
// save ints
}
else if (o.getClass().getName().contentEquals("boolean")) {
// save booleans
}
else if (o.getClass().getName().contentEquals("String")) {
// save Strings
}
else {
// etc.
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有意义吗?
有没有更好的方法来实现这一目标?
我一直试图使用Android AudioManager.setMicrophoneMute()而没有太大的成功.也就是说,无论我做什么,它都会拒绝将麦克风静音.
我在网上搜索了一些线索,我发现有几个参考报告了类似的经历:
这引出了一个问题:是否AudioManager.setMicrophoneMute()有效?它只是一个存根方法,等待在未来的Android版本中实现吗?如果没有,它是如何工作的?我需要做些什么才能让它发挥作用?有什么条件让它的名字意味着它起作用?
编辑:我注意到这个方法的文档说:
此方法仅应由替换平台范围的音频设置管理或主要电话应用程序的应用程序使用.
这是什么意思?为什么我要替换平台范围的管理?我真的需要这样做吗?如果是这样,我该怎么做?
编辑:下面的答案是伟大的,但我仍然不明白:
请解释.谢谢.
我曾经使用我的受限用户帐户(即不是管理员)运行Eclipse 3.5.2.
但是当我升级到3.6.2时,Eclipse拒绝在受限用户帐户中运行(它只在管理员下运行).
它发出以下错误:
目录C:\ eclipse\configuration\org.eclipse.osgi中无法锁定.常见原因是文件系统或运行时环境不支持该位置的文件锁定.请选择其他位置,或禁用文件锁定,将"-Dosgi.locking = none"作为VM参数传递.C:\ eclipse\configuration\org.eclipse.osgi.manager.fileTableLock(访问被拒绝)
好吧,我检查了该文件夹的所有者(Windows XP),它是管理员,所以当然访问将被拒绝.
但是......为什么不在Eclipse 3.5.2中发生这种情况?
我可以解决这个问题,通过分配整个的所有权,C:\eclipse\configuration\org.eclipse.osgi但不理解为什么,我不知道我是否需要为其他文件夹这样做.
另一种解决方法是执行错误消息建议:禁用-Dosgi.locking=none作为VM参数传递的文件锁定.但我不知道会有什么权衡(锁定是有原因的,对吧?它是什么?)
如果我理解锁定的目的是什么,我可以明智地选择上面列出的2个解决方法之一.
在C++中,私有数据成员的getter和setter非常有用,因为它能够通过const返回值控制可变性.
在Java中,如果我理解正确(如果我弄错了请纠正我),final在getter上指定不会那样.一旦调用者通过getter接收到数据成员引用,它就可以修改它,尽管它是私有的......
如果是这种情况(如果我在这里有严重的误解,请纠正我),为什么不宣布数据成员public并简化事情呢?
试图决定(对于我的应用程序)在onPause()中保存什么以及在onSaveInstanceState()中保存什么,我梳理了整个SO以获取提示和明确的指导.
如果我理解正确,onSaveInstanceState()最适合保存"运行时更改"或"当前状态"(无论这意味着什么),而onPause()最适合保存"持久状态"(无论这意味着什么).
我仍然难以确定我的申请中的内容构成"持久状态"与"当前状态".例如,虽然用户偏好显然是持久的,但是onPause()当用户更改它们时,Android UI框架总是自动保存它们时是否需要保存它们?
类数据成员是否需要保存在onSaveInstanceState()中?我是否需要为我的应用程序中的每个类执行此操作?
我很迷惑.
你能带来真实世界的例子,说明必须保存的内容onPause()和必须保存的内容onSaveInstanceState()吗?除了设备配置更改,即.
-
在我的问题得到解答后,一些新的见解:
android application-state activity-lifecycle onpause android-activity
Android和Java提供了一个加密API,相对来说非常容易用于加密非专家.
但是既然我们知道没有任何代码可以真正受到保护免受逆向工程,特别是用作种子或共享机密的字符串常量,我想知道:在Android应用程序中经历加密和解密的磨难有什么意义?
我错过了什么吗?
试图让我的问题更清晰,更具体:假设我已经在使用特定字符串的应用程序通过代码,在代码(即没有用户数据)必须是秘密的:一种方法是将它们存储在加密的形式在编译.apk并在运行时解密它们(使用模糊的硬编码密码).另一种方法是将它们以加密形式存储在远程服务器中,在运行时获取它们(通过Internet)并解密(使用共享密码)它们.
我认为两者之间没有太大的区别,因为两者都要求(反向工程)代码中存在"密钥".
有这个问题的解决方案吗?
如果没有解决方案,为什么要加密?
在我的ativity的onCreate()中,我设置了一个MediaPlayer.OnCompletionListener,然后播放一个MP3文件:
MediaPlayer p = MediaPlayer.create(this, R.raw.intro);
p.setOnCompletionListener(this);
p.start();
Run Code Online (Sandbox Code Playgroud)
当比赛结束时,我只是处理这个事件:
public void onCompletion(MediaPlayer mp) {
// handle completion
}
Run Code Online (Sandbox Code Playgroud)
所有美好和花花公子,但现在我要玩2个不同的MP3文件,并办理竣工区别基于该文件被播放.
有没有办法从MediaPlayer参数告诉哪一块结束?
android ×5
java ×5
arraylist ×1
boolean ×1
bundle ×1
decompiling ×1
eclipse ×1
encryption ×1
getter ×1
integer ×1
microphone ×1
onpause ×1
string ×1