2012-10-20 22 views
2

我正在开发一个倒数计时器。但是我希望它即使在我回到以前的活动时也会运行。我怎么能做到这一点? Android新手在这里。Android让秒表运行

这是我到目前为止所做的: 私人按钮暂停,停止,启动,重置; 私人记时计; long timeWhenStopped = 0;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_LEFT_ICON); 
    setContentView(R.layout.stopwatch); 
    getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.clock32); 

    // initializes controls 
    initControls(); 

    // sets format for chronometer 
    chronometer.setText("00:00:00"); 

} 


private void initControls(){ 

    // initializes buttons & chronometer 
    pause = (Button) findViewById (R.id.btStopWatchPause); 
    stop = (Button) findViewById (R.id.btStopWatchStop); 
    start = (Button) findViewById (R.id.btStopWatchStart); 
    reset = (Button) findViewById (R.id.btStopWatchReset); 
    chronometer = (Chronometer) findViewById (R.id.chronometer); 

    // sets listeners for buttons and chronometer 
    pause.setOnClickListener(this); 
    stop.setOnClickListener(this); 
    start.setOnClickListener(this); 
    reset.setOnClickListener(this); 
    chronometer.setOnChronometerTickListener(this); 

} 


public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()) 
    { 
    case R.id.btStopWatchStart: 
     chronometer.setBase(SystemClock.elapsedRealtime() + timeWhenStopped); 
     chronometer.start(); 
     break; 
    case R.id.btStopWatchStop: 
     chronometer.stop(); 
     break; 
    case R.id.btStopWatchReset: 
     chronometer.setBase(SystemClock.elapsedRealtime()); 
     break; 
    case R.id.btStopWatchPause: 
     timeWhenStopped = chronometer.getBase() - SystemClock.elapsedRealtime(); 
     chronometer.stop(); 
     break; 

    } // end of switch statement 

} 

public void onChronometerTick(Chronometer c) { 
    // TODO Auto-generated method stub 

    CharSequence text = c.getText(); 
    if (text.length() == 5) { 
     c.setText("00:" + text); 
    } else if (text.length() == 7) { 
     c.setText("0" + text); 
    } 



} // end of onChronometerTick method 

回答

-1

您希望您的应用继续运行,即使活动不再可见时。这个问题已经有了答案。例如这里:How to keep an Android app running indefinitely?

+0

那么什么解决方案会对我的应用程序有利?对不起android新手在这里 – Dunkey

+0

它必须作为服务运行 – NilsB

+0

你有关于服务的代码片段,所以它可以让我开始?谢谢。 – Dunkey