代码之家  ›  专栏  ›  技术社区  ›  Alin

安卓计时表滴答一声就停了

  •  2
  • Alin  · 技术社区  · 14 年前

    Activity ctx = this;
    ...
    
    private void ShowText(String message)
        {
            txtProceed.setText(message);
            txtProceed.setVisibility(View.VISIBLE);
    
    
            chronoHideText = new Chronometer(ctx);
            chronoHideText.setOnChronometerTickListener(new OnChronometerTickListener()
            {
                   public void onChronometerTick(Chronometer arg0) {
    
                      long elapsed = SystemClock.elapsedRealtime() - chronoHideText.getBase();
                      Log.i("Chrono",String.valueOf(elapsed));
                       if (elapsedTime>10000)
                       {
                           txtProceed.setVisibility(View.INVISIBLE);
                           chronoHideText.stop();
                       }
                   }
            }
            );
    
            chronoHideText.setBase(SystemClock.elapsedRealtime());
            chronoHideText.start();
    
        }
    

    谢谢你的帮助。现在行之有效的解决方案是:

    Handler splashHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                        switch (msg.what) {
                        case 0:
                                //remove SplashScreen from view
                                txtProceed.setVisibility(View.INVISIBLE);
                                break;
                        }
                        super.handleMessage(msg);
                }
        };
    
        Message msg = new Message();
        msg.what = 0;
        splashHandler.sendMessageDelayed(msg, 10000);
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Janusz Daniel Rindt    14 年前

    你可以用 handler 发出一个延迟的信息。 handleMessage 方法。

    这样你就不需要自己测量时间,也不需要每秒钟或毫秒计算一次。在Android操作系统发送消息之前,你的应用程序不会占用任何cpu时间。

        2
  •  1
  •   user479211    14 年前
    public class ButtonVisibility extends Activity {
    
    Button mButton;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_button);
    
        mButton = (Button)findViewById(R.id.button);
    
        new MyTask().execute(null);
    }
    
    public class MyTask extends AsyncTask<Void, Void, Void> {
    
        @Override
        protected Void doInBackground(Void... params) {
            try {
                Thread.sleep(10000);
            }
            catch(InterruptedException e) {
                Log.e("MyTask", "InterruptedException", e);
            }
            return null;
        }
    
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            mButton.setVisibility(View.INVISIBLE);
        }
      }
    

    推荐文章