1.在一个普通的class里,怎么访问activity类里的非静态变量或方法
也可以通过构造函数将上下文传递过去!
即 ab c=new ab(xxxActivity.this)
在ab类中,
通过这个上下文调用acitivity里面的方法
----------------------------------------------------
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
屏幕旋转的时候系统会销毁当前的activity。但是当drawable和view关联后,drawable保存了view的 reference,即sBackground保存了label的引用,而label保存了activity的引用。既然drawable不能销毁,它所引用和间接引用的都不能销毁,这样系统就没有办法销毁当前的activity,于是造成了内存泄露。gc对这种类型的内存泄露是无能为力的。
----------------------------------------------------------
3.动态改变listview
Adapter.notifyDataSetChanged();
----------------------------------------------------------
-------------------------------------------------------
也可以通过构造函数将上下文传递过去!
即 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();
----------------------------------------------------------
-------------------------------------------------------