public class HandlerTestActivity extends Activity {
/** Called when the activity is first created. */
private Button but;
private ProgressBar pb;
HandlerThread ht;
myhandler my; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
but = (Button) findViewById(R.id.button1);
pb = (ProgressBar) findViewById(R.id.progressBar1);
but.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) {
// TODO Auto-generated method stub
ht = new HandlerThread("info");
ht.start();
my = new myhandler(ht.getLooper());
my.post(run); } });
} Runnable run = new Runnable() {
int i = 0; public void run() {
// TODO Auto-generated method stub
i = i + 10;
Message ms = my.obtainMessage();
ms.arg1 = i;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} if (i < 100) {
ms.sendToTarget();
} else {
pb.setVisibility(View.GONE);
System.out.println("run里面关闭不了");
my.removeCallbacks(run);
} }
}; class myhandler extends Handler {
public myhandler() {
} public myhandler(Looper lop) {
super(lop);
} @Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
pb.setProgress(msg.arg1);
my.post(run); } }
}11-23 06:51:14.102: W/dalvikvm(729): threadid=9: thread exiting with uncaught exception (group=0x40015560)
11-23 06:51:14.102: E/AndroidRuntime(729): FATAL EXCEPTION: info
11-23 06:51:14.102: E/AndroidRuntime(729): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.ViewRoot.checkThread(ViewRoot.java:2932)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.ViewRoot.requestLayout(ViewRoot.java:629)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.requestLayout(View.java:8267)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.requestLayout(View.java:8267)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.requestLayout(View.java:8267)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.requestLayout(View.java:8267)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.requestLayout(View.java:8267)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.setFlags(View.java:4641)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.view.View.setVisibility(View.java:3116)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.widget.ProgressBar.setVisibility(ProgressBar.java:769)
11-23 06:51:14.102: E/AndroidRuntime(729):  at com.ddt.handlertest.HandlerTestActivity$1.run(HandlerTestActivity.java:57)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.os.Handler.handleCallback(Handler.java:587)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.os.Looper.loop(Looper.java:123)
11-23 06:51:14.102: E/AndroidRuntime(729):  at android.os.HandlerThread.run(HandlerThread.java:60)