Android解惑之Handler为什么需要是static的
2017-11-10 · 让每个孩子都能正常讲话,是我们最大的心愿
阳光语言矫正学校
1992年开始语音病理学研究,北京、上海 、长春设有校区,功能性构音障碍、腭裂语音障碍、听力言语障碍、语言发育迟缓、口吃等多个语音矫正和训练项目,对大舌头 口吃等各种语言障碍有数万例矫正经验
向TA提问
关注
展开全部
1,为什么会引起内存泄漏?
2,那么为什么要写成静态内部类呢?或者写成其他单独的类呢?
3,如何写?
package applock.anderson.com.statichandler;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import java.lang.ref.WeakReference;public class MainActivity extends AppCompatActivity { private TextView mTextView; private Handler mHandler; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.tv_1);
mHandler = new MyHandler(this);
mHandler.sendEmptyMessageDelayed(0,5000);
} public void setTextViewText(String str) { if(mTextView != null) {
mTextView.setText(str);
}
} private static class MyHandler extends Handler {
WeakReference<MainActivity> mainActivityWeakReference; public MyHandler(MainActivity activity) {
mainActivityWeakReference = new WeakReference<MainActivity>(activity);
} @Override
public void handleMessage(Message msg) { super.handleMessage(msg); //若Avtivity被回收,此时activity便为空
MainActivity activity = mainActivityWeakReference.get(); if(activity != null) {
activity.setTextViewText("修改成功");
}
}
}
}
要持有我们的Activity的弱引用呢,完全可以使用MVP大法,持有我们Activity实现的接口对象的弱引用,也就是多态的方式持有我们的Activity弱引用,多么美好的事情。
2,那么为什么要写成静态内部类呢?或者写成其他单独的类呢?
3,如何写?
package applock.anderson.com.statichandler;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import java.lang.ref.WeakReference;public class MainActivity extends AppCompatActivity { private TextView mTextView; private Handler mHandler; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.tv_1);
mHandler = new MyHandler(this);
mHandler.sendEmptyMessageDelayed(0,5000);
} public void setTextViewText(String str) { if(mTextView != null) {
mTextView.setText(str);
}
} private static class MyHandler extends Handler {
WeakReference<MainActivity> mainActivityWeakReference; public MyHandler(MainActivity activity) {
mainActivityWeakReference = new WeakReference<MainActivity>(activity);
} @Override
public void handleMessage(Message msg) { super.handleMessage(msg); //若Avtivity被回收,此时activity便为空
MainActivity activity = mainActivityWeakReference.get(); if(activity != null) {
activity.setTextViewText("修改成功");
}
}
}
}
要持有我们的Activity的弱引用呢,完全可以使用MVP大法,持有我们Activity实现的接口对象的弱引用,也就是多态的方式持有我们的Activity弱引用,多么美好的事情。
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询