这几天写了一个粗糙的自动天气预报程序,犯了不少低级错误,在此简要记录一下。
1. Android 6.0(API 23)的SDK中抛弃了 org.apache.http.*中很多东西,HttpClient也没有了。还想使用的话要在 build.gradle 文件中的 android{ } 中添加 useLibrary 'org.apache.http.legacy' 语句就行了。
2. java中使用正则表达式要注意,例如希望 String s的内容为 \[ ,那么在定义的时候应写成 String s="\\["; 因为\在java中也是一个转义符, "\\"经过java处理后就变成了"\" 。
3. 网络请求记得要加权限
4. 在Android 3.0 之后,访问网络是被禁止在主线程中运行的。因为我做的这个主要是后台服务,所以我直接在主线程访问网络,结果就出现了异常。
5. 在使用 SharedPreferences时,我在写入数据的时候调用了 editor.clear(); 方法,看来是和数据库那个ContentValues 混淆了。Editor的clear方法会把原来储存的数据全部删除,要注意。 还有要注意getSharedPreferences()方法中的模式选择,MODE_PRIVATE在写入时会覆盖原来的内容,MODE_APPEND则会追加内容。