我正在尝试使用SharedPreferencesAPI存储一组字符串.
Set<String> s = sharedPrefs.getStringSet("key", new HashSet<String>());
s.add(new_element);
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putStringSet(s);
edit.commit()
Run Code Online (Sandbox Code Playgroud)
我第一次执行上面的代码时,s设置为默认值(刚刚创建的结束为空HashSet)并且存储没有问题.
第二次和下次我执行此代码时,s返回一个对象,并添加第一个元素.我可以添加元素,并且在程序执行期间,它显然存储在SharedPreferences,但是当程序被终止时,SharedPreferences从其持久存储中再次读取并且新值被丢失.
第二个以及之后的元素如何存储以便它们不会丢失?
获取DisplayMetrics的正确方法是什么,即获取屏幕/显示信息,如density或xdpi?
我问,因为我已经看到了两种方法:
第一:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
Run Code Online (Sandbox Code Playgroud)
然后通过metrics.density或获取信息metrics.xdpi等
第二:
getResources().getDisplayMetrics().density
Run Code Online (Sandbox Code Playgroud)
在这个方法中,我相信你也可以初始化一个变量来保存DisplayMetric,然后像FIRST方法一样获取信息:
DisplayMetrics metricsMethodTwo = getResources().getDisplayMetrics()
Run Code Online (Sandbox Code Playgroud)
然后你可以得到正常的信息:metricsMethodTwo.density或metricsMethodTwo.xdpi
我在Docs的各个地方都见过.那么有什么区别,如果有的话,何时一种方法比另一方更受青睐(或更合适)?为什么?谢谢
我被要求为Android安装一个简单的应用程序.第一个事实上我会得到报酬,所以我真的不想搞砸了:).其中一个要求是必须对代码进行模糊处理.
我学会了混淆的一般想法,但我不想犯任何愚蠢的错误.
我究竟需要做些什么来使代码混淆?将它作为发布版本导出是否完成工作,还是需要其他一些步骤?任何评论也表示赞赏.
PS.如果重要的话,我正在使用Eclipse.
编辑
从anwsers中建议的文章:
要启用ProGuard的,这样它会作为一个Ant或Eclipse构建的一部分,设置在/project.properties文件proguard.config属性.路径可以是绝对路径或相对于项目根的路径.
如果将proguard.cfg文件保留在其默认位置(项目的根目录),则可以指定其位置,如下所示:
proguard.config = proguard.cfg
我确实在项目的目录中有project.properties文件.但是我没有proguard.cfg文件.相反,我有proguard-project.txt文件.我想这是一个替代品.
project.properties:
此文件由Android Tools自动生成.不要修改此文件 - 您的更改将被删除!
必须在版本控制系统中检查此文件.
要自定义Ant构建系统使用的属性,请编辑"ant.properties",并覆盖值以使脚本适应您的项目结构.
要使ProGuard能够缩小和混淆代码,请取消注释(可用属性:sdk.dir,user.home):
proguard.config = $ {sdk.dir} \工具\ proguard的\ proguard的-android.txt:proguard的-project.txt
项目目标.目标=机器人-7-
最初除了最后一行之外的所有内容都被注释掉了.
在proguard-project.txt中,所有内容都被注释掉了.
我想我已经迷失在这里,所以我会非常感激如果有人可以一步一步地告诉我我应该做什么,以及如何检查它是否真的有效.