Handler声明称静态内部类,实例化报错
安卓开发实现下载进度条
在使用Handler更新UI的时候,我是这样写的
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
progressBar.setProgress((Integer)msg.obj);
textView.setText("已下载"+msg.obj+"%");
}
};
编译器给出了这样的警告
This Handler class should be static or leaks might occur
查询资料后,使用静态内部类
private static class MyHandler extends Handler {
private final WeakReference mActivity;
public MyHandler(MainActivity activity) {
mActivity = new WeakReference(activity);
}
@Override
public void handleMessage(Message msg) {
if (mActivity.get() != null) {
}
}
}
实例化MyHandller的时候依旧给出这样的警告
This Handler class should be static or leaks might occur
以及我的静态内部类声明有问题吗?
完整的代码
public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private TextView textView;
private int downloadStatus = 0;
private static class MyHandler extends Handler {
private final WeakReference mActivity;
public MyHandler(MainActivity activity) {
mActivity = new WeakReference(activity);
}
@Override
public void handleMessage(Message msg) {
if (mActivity.get() != null) {
}
}
}
private static MyHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
textView = (TextView) findViewById(R.id.textShow);
handler = new MyHandler(this) {
public void handleMessage(Message msg) {
progressBar.setProgress((int) msg.obj);
textView.setText("已下载" + msg.obj + "%");
}
};
new MyThread().start();
}
class MyThread extends Thread {
@Override
public void run() {
while (downloadStatus < 100) {
downloadStatus = doWork();
Message msg = new Message();
msg.obj = downloadStatus;
handler.sendMessage((Message) msg.obj);
}
}
}
//模拟下载过程
int doWork() {
downloadStatus += 1;
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
return downloadStatus;
}
}
相关阅读:
java 有没有开源的网上商城系统,就好比 php 的 ecshop
对Lua table存储过程不太理解
如何给processing-py.sh传递参数?
swift中类型属性的疑惑
apache 怎么禁止某个ip?
in_array()
coreseek在 searchd服务后,通过php接口文件sphinxapi.php 就无法成功??
PHP如何生成一个指定年份一整年的日历
fedora21怎么升级内核到4.1
如何正确对待回调函数?
关于node.js使用上的问题
为什么thinphp出错不显示
测试网页是浏览器弹出“此网页为英文网页”,怎样不让网页弹这个?
多说这个社会化评论插件是不是不太稳定?
定义IP地址的方法疑惑
无法打开包括文件:“d3dx10math.h”
怎么实现通过浏览器的后退按钮回到的上一个页面, 上一个页面重新加载?
php中如何优雅的将一个字符串打乱顺序然后输入(不利用数组)?
控制页面滚动条
有哪些受欢迎的游戏或App使用到手机传感器的?