导航:首页 > 操作系统 > android匿名内部类

android匿名内部类

发布时间:2025-06-30 14:15:08

① 如何在android studio里设置点击监听事件

Androidstudio 添加点击监听事件有三种方法:

一.匿名内部类

1.先找到那个控件(初始化)

private Button bt1; //onCreate方法外

bt1 = (Button)findViewById(R.id.button1);

2.设置事件监听器

bt1.setOnClickListener(new OnClickListener(){

public void onClick(View v){

System.out.println("我的按钮被点击了");

}

});

(1)android匿名内部类扩展阅读:

如果按钮绑了监听器

按钮点击是通过OnClickListener来实现的

大致的流程应该是这样的

public class MainActivity extends Activity

{

private Button loginButton;

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//创建监听器对象

loginButton = (Button) findViewById(R.id.login_btn);

OnClickListener listener = new ButtonClickListener();

loginButton.setOnClickListener(listener);

}

/**
* 监听器类

*/

class ButtonClickListener implements OnClickListener

{

@Override

public void onClick(View v)

{

switch (v.getId())

{

case R.id.login_btn:

//点击后的逻辑处理

break;

}

}

}

② Android线程泄漏场景以及解决办法

1.非静态内部类的静态实例

非静态内部类会持有外部类的引用,如果非静态内部类的实例是静态的,就会长期的维持着外部类的引用,组织被系统回收,解决办法是使用静态内部类

2.多线程相关的匿名内部类和非静态内部类

匿名内部类同样会持有外部类的引用,如果在线程中执行耗时操作就有可能发生内存泄漏,导致外部类无法被回收,直到耗时任务结束,解决办法是在页面退出时结束线程中的任务

3.Handler内存泄漏

Handler导致的内存泄漏也可以被归纳为非静态内部类导致的,Handler内部message是被存储在MessageQueue中的,有些message不能马上被处理,存在的时间会很长,导致handler无法被回收,如果handler是非静态的,就会导致它的外部类无法被回收,解决办法是1.使用静态handler,外部类引用使用弱引用处理2.在退出页面时移除消息队列中的消息

4.Context导致内存泄漏

根据场景确定使用Activity的Context还是Application的Context,因为二者生命周期不同,对于不必须使用Activity的Context的场景(Dialog),一律采用Application的Context,单例模式是最常见的发生此泄漏的场景,比如传入一个Activity的Context被静态类引用,导致无法回收

5.静态View导致泄漏

使用静态View可以避免每次启动Activity都去读取并渲染View,但是静态View会持有Activity的引用,导致无法回收,解决办法是在Activity销毁的时候将静态View设置为null(View一旦被加载到界面中将会持有一个Context对象的引用,在这个例子中,这个context对象是我们的Activity,声明一个静态变量引用这个View,也就引用了activity)

6.WebView导致的内存泄漏

WebView只要使用一次,内存就不会被释放,所以WebView都存在内存泄漏的问题,通常的解决办法是为WebView单开一个进程,使用AIDL进行通信,根据业务需求在合适的时机释放掉

7.资源对象未关闭导致

如Cursor,File,Broadcast等,内部往往都使用了缓冲,会造成内存泄漏,一定要确保关闭它并将引用置为null

8.集合中的对象未清理

集合用扮行团于保存对象,如果集合越来越大,不进行合理的清理,尤其是入股集合是静态的

9.Bitmap导致内存泄漏

bitmap是比较占内存的,所以一定要在不使用的时候及时进行清理,避免静态变量持有大的bitmap对象

10.监听器未关闭

很多需要register和unregister的系统服务要在合适的时候进行unregister,手动添加的listener也厅橘需要带颤及时移除

阅读全文

与android匿名内部类相关的资料

热点内容
手机游戏被盗该怎样加密密码 浏览:777
pdf文件文字复制 浏览:181
孕妇运动app哪个好用 浏览:892
phpredis数据库设计 浏览:195
腹部有压缩感不舒服 浏览:959
三层立柱腰筋需要加密吗 浏览:293
苹果手机服务器如何更改 浏览:62
变频空调压缩机好坏 浏览:27
锐捷云桌面服务器版还原 浏览:777
享库生活源码 浏览:403
广发app付款码在哪里找 浏览:609
冷库压缩机接线 浏览:377
检测睡眠的app哪个好 浏览:31
加密文件在隐私空间哪里打开 浏览:336
单片机大屏 浏览:320
python实现ssh登录 浏览:437
滴滴车内录音怎么加密 浏览:935
php组合模式 浏览:768
负责支付宝安全的程序员 浏览:483
linux解压所有gz的包 浏览:735