android需知小细节

时间:2022-12-13 00:19:38

1. 布局文件命名不能包含大写字母,特殊字符。MyImageView.xml错误。

2. simpleAdapter适配器参数的含义: android需知小细节

3. gridviewandroid需知小细节

gridview的三个重要的属性:

android需知小细节

4.全局获取Context的技巧

Android开发中,很多地方都要用到Context上下文这个类对象,比如:弹出 Toast的时候需要、启动活动的时候需要、发送广播的时候需要、操作数据库的时候需要、使用通知的时候需要等。

如果是在Activity中,那么获取这个context对象很容易,因为Activity本身就继承Context,直接受用this就可以了。但是对于比较复杂的逻辑,这些代码没有放在Activity中,那么,获取Context就显得不是那么容易了。

这里告诉大家一个技巧:

Android 提供了一个 Application 类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。 而我们可以定制一个自己的 Application 类, 以便于管理程序内一些全局的状态信息,比如说全局 Context。

1,新建一个类MyApplication继承Application.

package com.example.networktest;

public class MyApplication extends Application {

private static Context context;

@Override

public void onCreate() {

context = getApplicationContext();

}

public static Context getContext() {

return context;

}

}

2,在 AndroidManifest.xml 文件的<application>标签下进行指定就可以了,代码如下所示:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="com.example.networktest"
  3. android:versionCode="1"
  4. android:versionName="1.0" >
  5. ……
  6. <application
  7. android:name="com.example.networktest.MyApplication"
  8. …… >
  9. ……
  10. </application>
  11. </manifest>

注意:指定 MyApplication 的时候一定要加上完整的包名,不然系统将无法找到这个类。

这样我们就已经实现了一种全局获取 Context的机制,之后不管你想在项目的任何地方

使用 Context,只需要调用一下 MyApplication.getContext()就可以了。

5.Handler与Looper、Message的关系  android异步加载框架:handler+looper+message

总结:handler负责发送消息,looper负责接收handler发送的消息,并直接把消息回传给handler自己。

MessageQueue就是一个存储消息的容器。

6. 主线程和子线程之间的传递,需要用到handler中的setmessage

如果想在子线程中更新ui线程,可以使用handler.post(runnable);

activity类和非activity类如适配器BaseAdapter类,可以使用传递构造方法的方式传递activity.this;  如:

mImgAdapter = new ImageAdapter(this, mImgs,
mCurrentDir.getAbsolutePath());// 当前文件夹的绝对路径

public ImageAdapter(Context context, List<String> mDatas, String dirPath) {
this.mDirPath = dirPath;// 父路径
this.mImgPaths = mDatas;// 所有图片
mInflater = LayoutInflater.from(context);
this.context = context;
mSelectedImg.clear();
}