话说Handler是为了使进程与UI进程异步运行而设立的,
那么下面这段代码
Runnable里直接运行一个带休息时间的死循环
为什么会导致UI进程的卡死?public class MainActivity extends Activity {
Button myButton1;
Button myButton2;
Handler handler;
Runnable myRunnable;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton1=(Button)findViewById(R.id.Button1);
myButton2=(Button)findViewById(R.id.Button2);
handler=new Handler();
myRunnable =new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int i=0;
while(true)
{
System.out.println("线程编号:"+i); try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
myButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.post(myRunnable);
}
});
myButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.removeCallbacks(myRunnable);
}
});
}
}难道必须在run里有一个handler.postDelayed(myRunnable, 2000);?
那么Runnable还怎么能起到连续做复杂操作,而不影响UI进程的作用?
我知道一定是我的理解有问题,求指点……handlerandroid安卓进程异步
那么下面这段代码
Runnable里直接运行一个带休息时间的死循环
为什么会导致UI进程的卡死?public class MainActivity extends Activity {
Button myButton1;
Button myButton2;
Handler handler;
Runnable myRunnable;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myButton1=(Button)findViewById(R.id.Button1);
myButton2=(Button)findViewById(R.id.Button2);
handler=new Handler();
myRunnable =new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
int i=0;
while(true)
{
System.out.println("线程编号:"+i); try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
myButton1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.post(myRunnable);
}
});
myButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
handler.removeCallbacks(myRunnable);
}
});
}
}难道必须在run里有一个handler.postDelayed(myRunnable, 2000);?
那么Runnable还怎么能起到连续做复杂操作,而不影响UI进程的作用?
我知道一定是我的理解有问题,求指点……handlerandroid安卓进程异步
解决方案 »
- android EditText问题
- 怪现象:能解释一下用HttpGet可以获取服务器端的XML文件内容,用httpPost却不行
- 能不能不通过Intent.createChooser()直接把数据分享给某个程序?
- 毕设android开发软件控制小车,各位大侠帮帮忙啊!!
- Failed to find style 'switch Style' in current theme
- 新手求助、大神帮忙啊!!!!
- 请教后台服务如何监听音量按键
- android又腐案mysql数据库;连接不上的问题
- 请教一个android布局的问题..
- 如何实现CardView上边两个圆角下边两个直角
- 请问如何实现局域网内用手机下载文件?
- Android 中资源修改方法 (主要framework里面修改未生效)
想不阻塞,获取一个HandlerThread的looper即可