Android開発タイミングリフレッシュインタフェース

2385 ワード

Androidクライアントソフトウェアは、ソフトウェアのアップグレードやソフトウェア内部の更新など、一部のインタフェースをリフレッシュする必要があります.Androidでは、この機能を実現するために2つの方法を選択できることを紹介します.
方式一、Timer(タイマー)とTimerTaskを用いて実現
サンプルコード:
public class MainActivity extends Activity {
    private TextView msg;

    final Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            switch (msg.what) {
            case 1:
                update();
                break;
            }
            super.handleMessage(msg);
        }
        void update() {
            //  msg   
        }
    };
    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
        public void run() {
            Message message = new Message();
            message.what = 1;
            handler.sendMessage(message);
        }
    };
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        msg = (TextView) findViewById(R.id.txtMsg);
        msg.setText("   !");
        timer.schedule(task, 1000 * 40, 1000 * 30); //  timer
    }
    @Override
    protected void onDestroy() {
        if (timer != null) {//   timer
            timer.cancel();
            timer = null;
        }
        super.onDestroy();
    }
}

方式二、RunnableとHandlerを使う
サンプルコード
public class MainActivity extends Activity {
    private TextView msg;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run() {
            this.update();
            handler.postDelayed(this, 1000 * 120);//   120 
        }
        void update() {
            //  msg   
        }
    }; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        msg = (TextView) findViewById(R.id.txtMsg);
        msg.setText("   !");
        handler.postDelayed(runnable, 1000 * 60);
    }
    @Override
    protected void onDestroy() {
        handler.removeCallbacks(runnable); //    
        super.onDestroy();
    }
}

第1の方法はまた、メッセージ通知の方法で更新を実現するのに適しており、第2の方法は、通常、リフレッシュが必要かどうかをアクティブにチェックすることである.タイミングリフレッシュの場合、このような第2の方法を使用するのがより良い.