ÔÌ©©éAá¦Îlbg©ç½©ð_E[h·éAvðìéêAuÊMvu_E[hvÈÇÌ_CAOð\¦µALZÂ\ÈóÔɵ½ãÅAÊXbhðN®µÄÀÛÌÊMðs¤Æ��¤ï¿½}ƪæ èÜ·B
AndroidÈçACÌActivity©çÔÌ©©éðs¤Threadð����µA»Ìrun()ÌÅãÉACÌActivityÖI¹ðÊmAActivityÍ_CAOðÂ��éAÆ��Á½ï¿½ï¿½êÉÈé©Æv��ܷªAandroidÅ�}ÌÜÜÀµÄµÜ¤ÆuOnly the original thread that create a view hierarchy can touch its view.vÆ��¤G[ÉÈÁĵÜ��ܷB
æ¤ÍActivity©gÌXbhÌݪ»Ìr [ðÏXÅ«éAÆ��¤ï¿½}ÆÌæ¤Å·BAndroidÍ��¿ï¿½ï¿½¿bZ[WªJŠ誽��ŷB
��á AndroidÅÍǤ·éÌ©Æ��¤ï¿½}ÆÅ·ªAHandlerNXÆ»Ìpost()\bhðgpµÜ·B
á¦ÎAActivityÉRunnableðÀµÄ�N«Arun()\bhÉÍ_CAOðÂ��éð��Ä�N«Ü·BêûAÔÌ©©éðÀs·éThreadÉÍhandlerIuWFNgÆRunnableðÀµ½ActivityðnµÜ·B»µÄThread#run()ÌÅãÅuhandler.post(activity);vÆ©·êÎAÌI¹É¿áñÆ_CAOðÂ��é�}ƪūܷB
\[XR[hÉ·éÆ�}ñÈ�L��B
public class MyActivity extends Activity implements Runnable { private final Handler handler = new Handler(); private ProgressDialog dialog; // ª private void doSomething() { // vOX_CAOð\¦ dialog = new ProgressDialog(this); dialog.setIndeterminate(true); dialog.setMessage("Now in progress."); dialog.show(); // ÔÌ©©éðÀs·éXbhðX^[g doSomethingThread = new DoSomethingThread(handler, this); doSomethingThread.start(); } public void run() { // _CAOðÂ��é dialog.dismiss(); } } public DoSomethingThread() extends Thread { private Handler handler; private final Runnable listener; public DoSomethingThread(Handler _handler, Runnable _listener) { this.handler = _handler; this.listener = _listener; } @Override public void run() { // ÔÌ©©é // I¹ðÊm handler.post(listener); } }
ÈãA�}¿çÌLÉï¿½ï¿½Ä é�}Æð©ÝÓ��ÄÝܵ½B
C}hLÌAndroidAvP[VJû@