编程 - android开发 进度条出现死循环
高洛峰
高洛峰 2017-04-17 11:19:10
[Android讨论组]

public class MainActivity extends Activity implements OnClickListener{

private Button startBtn = null;
ProgressBar bar = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    bar = (ProgressBar)findViewById(R.id.bar);
    startBtn = (Button)findViewById(R.id.startbtn);
    startBtn.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    bar.setVisibility(View.VISIBLE);
    handler.post(updateThread);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        bar.setProgress(msg.arg1);
        if (msg.arg1<40)
            handler.post(updateThread);
    }
};
Runnable updateThread = new Runnable() {
    int i=0;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        System.out.println("Begin Thread");
        i += 10;
        Message msg = handler.obtainMessage();
        msg.arg1 = i;
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();

        }
        handler.sendMessage(msg);
        if ( i == 20 ) {
            System.out.println("errrrrrrrr");
            handler.removeCallbacks(updateThread);
        }
    }
};

}

上面这段代码为什么会在进度条到40时才终止呢?按说到20的时候,handler线程队列里面就清除了运行的线程不会继续执行了的啊?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号