安卓DEMO里面的示例,我应该把安卓DEMO里面的示例看过一遍
1. 通过网络获取归属地 缺陷: 网络
2. 本地的数据库 (有一个电话号码的归属地)
sqlite的数据库
android下的数据库 .db
一定要有一张 android_metadata
程序 开发中有一些大的素材 和资源文件
1. res目录建立一个文件夹 raw 在R文件中生成一个id的引用
最好推荐存放一些小的资源 几十k 几百K
2. assets 资产目录
不会把里面的内容在R 文件中生成一个引用
assets 不推荐我们存在1M 文件
appt 打包工具可能出现问题.
3. javame
把大的资源文件放置在src目录下 通过类加载器的方式 获取这个资源文件
导致我们应用程序的体积非常大.
4. 程序的主apk很小 素材文件 资源文件从服务器上下载
sdcard rom
一般游戏软件 大的oa软件
地图软件 离线地体20~100M~ 1G
菜谱程序:
我们知道在子线程不能对UI进行更改,为什么Progress可以不断的更新进度呢?
因为底层它已经实现是通过Handler更新的,你可以看源码,而且可以在子线程里面
写dismiss,其实底层就是显示:
public void dismiss() {
if (Thread.currentThread() != mUiThread) {
mHandler.post(mDismissAction);
} else {
mDismissAction.run();
}
}
如果不是主线和就告诉Handler去结束它,如果是主线程直接结束。
Message中what和obj区别?
学会从API demo里面找资源,先从上面的一些字符也就是资源文件找--》布局文件--》JAVA文件。
非常好的思路方法,要多学习方法。
有一个非常好的晃动动画,要学习。
没有使用类的成员变量直接做成静态方法。
发个东西:
File-based resource names must contain only lowercase a-z, 0-9, or _.
安卓中的XML文件只能是小写字母数字和下划线。
又是一个教训。子线程中不能改动主界面。
例如子线程里面不能调用一个Toast,因为它改变了主界面。操 ,太坑爹了。
记住了,所有在子线程里操作界面发生错误都是这句话:
Can't create handler inside thread that has not called Looper.prepare()
pd.setTitle("提示");
pd.setIcon(R.drawable.icon5);
pd.setCancelable(false);
pd.setMessage("正在下载数据库");
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.show();//pd的这些操作放在子线程里面就是Can't create handler inside thread that has not called Looper.prepare()
new Thread(){
public void run() {
//提示用户下载数据库
String dbUrl = getResources().getString(R.string.addressdburl);
try {
DownloadApkTask.download(dbUrl, Environment.getExternalStorageDirectory()+"/address.db", pd);
//下载结束 关闭pd,但是它可以放这,虽然操作了界面显示 ,不过底层已经处理过了,它是先交给主线程处理的。
pd.dismiss();
// Toast.makeText(AtoolsActivity.this, "下载成功", 0).show();
//
第三天:手机归属地
最新推荐文章于 2020-02-07 17:15:44 发布