初识android——Handler
2017-03-06 19:29
190 查看
刚写完前两篇,趁着不忙,又看了一个Handler的知识点,但是写完运行后碰到一个问题,就赶紧来发文记录一下,以后变厉害了 或者有了答案一定回来把这些博文的问题的答案写出来。
用Handle控制一个进度条,成功了,但是运行起来手机就变得特别卡。代码如下:
运行程序不卡,一旦点了开始,开始加载进度条就会变得非常卡,好心塞,希望有人解答一下。
用Handle控制一个进度条,成功了,但是运行起来手机就变得特别卡。代码如下:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main6); //根据控件的id取得控件的值 firstBar = (ProgressBar) findViewById(R.id.firstBar); BarButton = (Button) findViewById(R.id.Barbutton); tv=(TextView)findViewById(R.id.BarTextview); BarButton.setOnClickListener(new ButtonListener()); } //监听 class ButtonListener implements View.OnClickListener { @Override public void onClick(View v) { firstBar.setVisibility(View.VISIBLE); updateHandler.post(updateThread); } } //使用匿名内部类Handler来复写HandlerMessage这个方法 Handler updateHandler=new Handler(){ @Override public void handleMessage(Message msg) { firstBar.setProgress(msg.arg1); updateHandler.post(updateThread); } }; Runnable updateThread = new Runnable(){ int i=0; @Override public void run() { i=i+10; //得到一个消息对象,Message类由android操作系统提供 Message msg=updateHandler.obtainMessage(); //将arg1的值设置为i,用arg1的好处是较好的 msg.arg1=i; try{ //设置当前线程睡眠时间 Thread.sleep(1000); }catch (InterruptedException e){ e.printStackTrace(); } updateHandler.sendMessage(msg); if(i==100){ //当i=100,将线程从handler中移除 updateHandler.removeCallbacks(updateThread); tv.setText("加载完成"); } } };
运行程序不卡,一旦点了开始,开始加载进度条就会变得非常卡,好心塞,希望有人解答一下。
相关文章推荐
- 小白成长记——Android进阶之初识Handler
- 初识android.os.Handler
- Android-初识Handler,Looper,Message(-) 源码
- Android-初识Handler-子线程异步更新UI
- Android中Handler的使用方法——在子线程中更新界面
- android之handler使用--对于异步消息的处理
- 利用Handler来更新android的UI
- 初识Android
- android Handler(转)
- 初识 Android Native Development Kit (NDK)
- android Handler
- Android高手进阶教程(九)之----Android Handler的使用!!!
- 初识 Android 资源
- Android中Handler的使用方法——在子线程中更新界面
- Android Handler的使用(转载)
- 初识Android应用程序的五大基本组件
- 初识Android上层应用5大基本组件
- 初识Android
- 初识 AndroidManifest.xml 文件
- Android中Handler的使用方法——构建定时器