java 静态内部类 实例化_android,java_Handler声明称静态内部类,实例化报错,android,java - phpStudy...

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使用到手机传感器的?

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值