android内部类,android 匿名内部类
静态内部类的使用场景
首先我们来看一下,android中有哪些地方使用到了静态内部类:
十载的铜山网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整铜山建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“铜山网站设计”,“铜山网站推广”以来,每个客户项目都认真落实执行。
静态内部类的主要特点:
1 不持有外部类的引用(普通内部类持有)
2 可以直接创建实例,不需要先创建外部类(普通内部类需要)
3 可以有静态成员变量、方法(普通内部类不行)和非静态成员变量、方法
4 只可以直接访问外部类静态成员,不可以直接访问外部类的非静态成员(普通内部类可以),需要通过传入外部类引用的方式才能访问
外部类与内部类有很强的联系,需要通过内部类的方式维持嵌套的可读性。
内部类可以单独创建。
内部类不依赖于外部类,外部类需要使用内部类,而内部类不需使用外部类(或者不合适持有外部类的强引用)。
为什么不直接使用两个类,而要使用内部类?
1 维持两者之间密切的联系
2 保持嵌套可读性
androidstudio中怎样在MainActivity中创建内部类MyBaseAdapter继承自BaseAdap
Context。
1、Context提供了关于应用环境全局信息的接口。
2、它是一个抽象类,它的执行被Androidstudio系统所提供达到创建内部类MyBaseAdapter继承自BaseAdap。
android内部类继承Fragment为什么要用static
不是一定要用static声明为静态类,但是推荐作为内部静态类,因为内部类会隐式持有外部类的引用,有些时候如果代码处理不对容易造成内存泄漏
下面就是个内存泄漏的例子
public class MainActivity extends Activity {
public class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
if(msg.what==1){
new Thread(){
@Override
public void run() {
while(true){
//do something
}
}
}.start();
}
}
}
public MyHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//...
handler.sendEmptyMessage(1);
finish();
}
}
如上面代码所示,在onCreate方法里发送了一条消息给handler处理然后finish方法关闭activity,但是代码并不能如愿,因为在handler收到消息启动了一个线程并且是死循环,
这时候Thread持有handler的引用,而handler又持有activity的引用,这就导致了handler不能回收和activty也不能回收,所以推荐使用静态内部类,因为静态内部类不持有外部类的引用,可以避免这些不必要的麻烦
Android中为什么要使用内部类,有什么好处
匿名内部类可以不取名字,多好;嵌套内部类可以隐藏实现,也不错;另外,内部类从某种程度上可以实现多重继承,建议google下。
android 函数内部添加class
创建项目:
1、File----New-----java Project
2、src右键添加 New----Package(添加一个包,命名为“成员内部类”)
3、包右键添加New-----class/interface
注: 有main(String[] agre)函数的就是运行文件,如果要作为一般类使用,将注释及main(String[] agrs)函数删除。
4、运行:找到相对应的运行文件,右键 Run as -----java Appliaction
因为上面已经建了一个"成员内部类"包,所以包右键添加New-----class
android studio 的内部类和匿名内部类有什么关系?
一、内部类: 内部类是定义在另一个类中的类,使用它的原因主要有3个: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据; 内部类可以对同一个包中的其他类隐藏以来; 当想要定义一个回调函数且不想编写大量代码时,使用匿名内部
分享标题:android内部类,android 匿名内部类
浏览路径:http://scyanting.com/article/dseddoc.html