2008”N01ŒŽ31“ú

Android‚Łu’ʐM’†v‚Ý‚½‚��‚ȃ_ƒCƒAƒƒO‚ð•\Ž¦‚·‚é

ƒvƒƒOƒŒƒXƒ_ƒCƒAƒƒO ŽžŠÔ‚Ì‚©‚©‚鏈—A—Ⴆ‚΃lƒbƒg‚©‚牽‚©‚ðƒ_ƒEƒ“ƒ[ƒh‚·‚éƒAƒvƒŠ‚ðì‚éê‡Au’ʐM’†vuƒ_ƒEƒ“ƒ[ƒh’†v‚Ȃǂ̃_ƒCƒAƒƒO‚ð•\Ž¦‚µAƒLƒƒƒ“ƒZƒ‹‰Â”\‚ȏó‘Ô‚É‚µ‚½ã‚ŁA•ÊƒXƒŒƒbƒh‚ð‹N“®‚µ‚ÄŽÀÛ‚̒ʐMˆ—‚ðs‚¤‚Ƃ��‚¤‚�}‚Æ‚ª‚æ‚­‚ ‚è‚Ü‚·B

Android‚È‚çAƒƒCƒ“‚ÌActivity‚©‚玞ŠÔ‚Ì‚©‚©‚鏈—‚ðs‚¤Thread‚ðï¿½ï¿½ï¿½ï¿½‚µA‚»‚Ìrun()‚̍Ōã‚ɁAƒƒCƒ“‚ÌActivity‚֏I—¹‚ð’Ê’mAActivity‚̓_ƒCƒAƒƒO‚ð•Â‚��‚éA‚Ƃ��‚Á‚½—��‚ê‚É‚È‚é‚©‚ÆŽv‚��‚Ü‚·‚ªAandroid‚ł�}‚Ì‚Ü‚ÜŽÀ‘•‚µ‚Ä‚µ‚Ü‚¤‚ƁuOnly the original thread that create a view hierarchy can touch its view.v‚Ƃ��‚¤ƒGƒ‰[‚É‚È‚Á‚Ä‚µ‚܂��‚Ü‚·B

‚悤‚ÍActivityŽ©g‚̃XƒŒƒbƒh‚Ì‚Ý‚ª‚»‚̃rƒ…[‚ð•ÏX‚Å‚«‚éA‚Ƃ��‚¤‚�}‚Ƃ̂悤‚Å‚·BAndroid‚͂��‚¿‚��‚¿ƒƒbƒZ[ƒW‚ª’š”J‚Å‚ ‚肪‚½‚��‚Å‚·B

‚��‚á‚ Android‚Å‚Í‚Ç‚¤‚·‚é‚Ì‚©‚Ƃ��‚¤‚�}‚Æ‚Å‚·‚ªAHandlerƒNƒ‰ƒX‚Æ‚»‚Ìpost()ƒƒ\ƒbƒh‚ðŽg—p‚µ‚Ü‚·B

—Ⴆ‚΁AActivity‚ÉRunnable‚ðŽÀ‘•‚µ‚�N‚«Arun()ƒƒ\ƒbƒh‚ɂ̓_ƒCƒAƒƒO‚ð•Â‚��‚鏈—‚ð‘‚ï¿½ï¿½‚�N‚«‚Ü‚·Bˆê•ûAŽžŠÔ‚Ì‚©‚©‚鏈—‚ðŽÀs‚·‚éThread‚É‚ÍhandlerƒIƒuƒWƒFƒNƒg‚ÆRunnable‚ðŽÀ‘•‚µ‚½Activity‚ð“n‚µ‚Ü‚·B‚»‚µ‚ÄThread#run()‚̍Ōã‚Łuhandler.post(activity);v‚Æ‚©‚·‚ê‚΁Aˆ—‚̏I—¹Žž‚É‚¿‚á‚ñ‚ƃ_ƒCƒAƒƒO‚ð•Â‚��‚é‚�}‚Æ‚ª‚Å‚«‚Ü‚·B


ƒ\[ƒXƒR[ƒh‚É‚·‚é‚Ƃ�}‚ñ‚Ȋ�L‚��B

public class MyActivity extends Activity implements Runnable
{
    private final Handler handler = new Handler();

    private ProgressDialog dialog;

    // ’†—ª

    private void doSomething()
    {
        // ƒvƒƒOƒŒƒXƒ_ƒCƒAƒƒO‚ð•\Ž¦
        dialog = new ProgressDialog(this);
        dialog.setIndeterminate(true);
        dialog.setMessage("Now in progress.");
        dialog.show();

        // ŽžŠÔ‚Ì‚©‚©‚鏈—‚ðŽÀs‚·‚éƒXƒŒƒbƒh‚ðƒXƒ^[ƒg
        doSomethingThread = new DoSomethingThread(handler, this);
        doSomethingThread.start();
    }

    public void run()
    {
        // ƒ_ƒCƒAƒƒO‚ð•Â‚��‚é
        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ƒ}ƒhƒL‚ÌAndroidƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­•û–@

‚�}‚Ì‹LŽ–‚ւ̃Rƒƒ“ƒg
ƒRƒƒ“ƒg‚ð‘‚­
‚�N–¼‘O:

ƒ[ƒ‹ƒAƒhƒŒƒX:

ƒz[ƒ€ƒy[ƒWƒAƒhƒŒƒX:

ƒRƒƒ“ƒg: [•K{“ü—Í]

”FØƒR[ƒh: [•K{“ü—Í]


¦‰æ‘œ‚Ì’†‚̕��Žš‚𔼊p‚Å“ü—Í‚µ‚Ä‚­‚¾‚³‚��B
¦ƒuƒƒOƒI[ƒi[‚ª³”F‚µ‚½ƒRƒƒ“ƒg‚Ì‚Ý•\Ž¦‚³‚ê‚Ü‚·B

‚�}‚Ì‹LŽ–‚ւ̃gƒ‰ƒbƒNƒoƒbƒN
�~

‚�}‚̍L‚Í90“úˆÈãV‚µ‚��‹LŽ–‚Ì“Še‚ª‚Ȃ��ƒuƒƒO‚É•\Ž¦‚³‚ê‚�N‚è‚Ü‚·B