【问题标题】:android progressbar on click of Home/Back button单击主页/返回按钮时的android进度条
【发布时间】:2011-11-03 03:32:31
【问题描述】:

我在我的小游戏中实现了进度条,如下所示

    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);
        }
    };

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

谢谢

【问题讨论】:

    标签: java android android-progressbar


    【解决方案1】:

    您可以在 Activity 的 OnPause 方法中暂停线程,您可以在 Activity 的 OnResume 方法中恢复线程,这非常简单。现在,如果您想保持 GameProgressCount 不变并想从它离开的地方恢复,那么您可以使用 SharedPreference 来存储该值,当您恢复时使用相同的值开始。

    【讨论】:

    • 在这种情况下,App仍然处于活动状态但已最小化,是否真的需要将状态保存在sharedpreference中?
    • 如果你按下 Home 键 Activity 仍然在堆栈中,如果你按下返回按钮 Activity 将被杀死。所以 onPause 是在这两种情况下都会调用的方法,所以你可以在那里暂停线程。并且 sharedPreference 仅用于在您想从其离开的位置恢复活动时存储值,否则不需要
    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多