我在下面的小游戏中实现了进度栏

    gameProgressBar =(ProgressBar)findViewById(R.id.GameProcess);

    thrd = new Thread(progressBarThread);
    thrd.start();

}

//Progress bar function
private Runnable progressBarThread = new Runnable(){

    public void run() {
        // TODO Auto-generated method stub
        while (GameProgressCount<60){  //60 = 1 minute
            try{
                myHandle.sendMessage(myHandle.obtainMessage());
                Thread.sleep(1000);

            }
            catch(Throwable t){
            }
        }
        thrd.stop();
    }

    Handler myHandle = new Handler(){

        @Override
        public void handleMessage(Message msg) {

                GameProgressCount++;
                gameProgressBar.setProgress(GameProgressCount);
        }
    };


我的问题是,当我单击设备的后退/主页按钮时,应用程序已最小化(或进入上一屏幕),但进度栏线程将在后台运行。当我最小化/打开应用程序屏幕时,是否可以暂停线程并恢复运行。

谢谢

最佳答案

您可以在Activity的OnPause方法中暂停线程,并且可以在Activity的OnResume方法中恢复线程,这非常正确。现在,如果您想保持GameProgressCount完整无缺,并且想从它离开的地方继续恢复,那么您可以使用SharedPreference来存储该值,当您恢复返回时,请使用相同的值开始。

08-18 04:16