android activity

1.在一个普通的class里,怎么访问activity类里的非静态变量或方法

也可以通过构造函数将上下文传递过去!

即 ab c=new ab(xxxActivity.this)
在ab类中,
通过这个上下文调用acitivity里面的方法
public class A{
private TestActivity mActivity;

public A(TestActivity context){
mActivity = context;
xx();
}

private void xx(){
mActivity.method();
}
}

----------------------------------------------------
2. Activity中static静态变量释放的问题
重写了onDestory,在onDestory里添加android.os.Process.killProcess(android.os.Process.myPid());
把线程干掉,释放其静态变量,再次调用就正常了。
当窗口消毁时,Activity的静态变量是存在的,因为静态变量是属全局变量、静态变量是整个应用程序的公共变量(即使你这个地方写的是私有),所以Activity消毁时,静态变量是不会清除的。但当什么时候才会清除呢,上面说过静态变量是整个应用程序的,所以只有当各个应用程序的进程消毁时,静态变量才会毁,所以当LZ调用android.os.Process.killProcess(android.os.Process.myPid());就正常了。
demo
public class myactivity extends Activity {
private static Drawable sBackground;
protected void onCreate(Bundle state) {
super.onCreate(state);

TextView label = new TextView(this);
label.setText("Leaks are bad");

if (sBackground == null) {
sBackground = getDrawable(R.drawable.large_bitmap);
}
label.setBackgroundDrawable(sBackground);//drawable attached to a view

setContentView(label);
}
}

屏幕旋转的时候系统会销毁当前的activity。但是当drawable和view关联后,drawable保存了view的 reference,即sBackground保存了label的引用,而label保存了activity的引用。既然drawable不能销毁,它所引用和间接引用的都不能销毁,这样系统就没有办法销毁当前的activity,于是造成了内存泄露。gc对这种类型的内存泄露是无能为力的。
----------------------------------------------------------
3.动态改变listview
Adapter.notifyDataSetChanged();
----------------------------------------------------------
-------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值