似乎正在发生的事情是每次您锁定屏幕然后恢复它时,它会Runnable
在Runnable
您已经加倍运行的基础上再进行一次,从而使线程每次都变得越来越快,您需要以某种方式暂停线程之类的thread.sleep()
东西锁定屏幕时类似,因此当您恢复时,您不会重新创建一个新的Runnable
,而是从您在线程中中断的位置开始。
如果你正在制作一个新Runnable
的onCreate
方法。每当手机旋转或手机恢复等时都会调用它,这就是您可能遇到此问题的原因。finish()
在您进行活动或关闭您的应用程序后它不会发生的原因是因为当您重新启动应用程序时,它将Runnable
被创建一次,直到您开始锁定手机并再次恢复等。
您可能还想查看可用于帮助处理线程的内部类:
public class YourClass extends Activity {
public void yourUpdateMethod() {
runOnUiThread(new Runnable() {
public void run() {
new YourUpdateClass().execute(0, null, null);
}
});
}
private class YourUpdateClass extends AsyncTask<Integer, Void, Void> {
@Override
protected synchronized Void doInBackground(Integer... index) {
return null;
}
@Override
protected synchronized void onPostExecute(Void result) {
//your statements here
}
}
}
这可能有助于处理必须暂停/重新启动/恢复或更好的线程。更多信息在这里:http: //developer.android.com/reference/android/os/AsyncTask.html
不知道它在游戏中如何运作,但没有玩弄它。
祝你好运,希望这会有帮助。