我正在使用在线程上运行的 SurfaceView 类中的画布。SurfaceView 由 Activity (setContentView(surfaceview)) 调用。当屏幕关闭时,它会通过一个 pause() 方法关闭所有循环变量等。
奇怪的是:虽然在我的平板电脑(Android 4.4.2)线程暂停和恢复正确(线程重新开始),但是在我的手机(Android 4.2.2)和其他人的手机(CM 11)上,应用程序挂起(它不会崩溃!它只是挂起),我必须杀死它。LogCAT不打印任何东西-然而,我试图找出使用Log. i发生了什么,似乎在暂停方法完成后,暂停方法再次开始,这就是应用程序挂起的地方。
我之前检查过,暂停/恢复方法被正确调用(使用 super.onPause()/Resume() 覆盖活动的 onPause/onResume,然后是 surfaceview.pause()/resume())
我的暂停/恢复方法:
public void resume() {
countdown = true; // this one,
threadRun = true; // this one and
finishWait = true; // this one each are loop controllers
won = false;
hitCount = 0;
thread = new Thread(this);
thread.start();
}
public void pause() {
Log.i("codeflow", "Pause method start");
// all loop controllers have been set to false
countdown = false;
threadRun = false;
finishWait = false;
/* Log.i("CodeFlow", "drawablank");
drawABlankScreen(); // to hide everything drawn */
while (true) {
try {
Log.i("codeflow", "Thread.join() loop");
thread.join();
break;
} catch(InterruptedException e) {
Log.i("codeflow", "InterruptedException");
e.printStackTrace();
}
}
thread = null;
Log.i("codeflow", "Thread is killed");
if (won && !lost) { // !lost IS necessary
Log.i("CodeFlow", "save highscore");
saveHighscore(highscore);
}
}
pause方法以它应该的方式完成了所有事情,但是它又开始了(另一个“Pause方法开始”),或者转到drawABlankScreen(),或者当这个克林被注释时,它打印“Thread.join() loop”一次,然后应用程序挂起。
最让我恼火的是,它可以挂在我的手机上,却不能挂在我的平板电脑上。谁能帮我一下,我已经找了几个小时了,什么也没找到....
“thread.join()
” 将挂起执行此句子的线程,直到线程运行。当然,如果在Android UI线程中执行,Android不会崩溃。(对不起,我的英语错误很多)。
在onPause()中将UI线程连接到后台线程可能是导致问题的原因。
相反,您应该终止线程。
关闭屏幕盖时 设定关闭屏幕盖时的动作。 标准 关闭屏幕盖时,显示专用的画面。 进入睡眠模式 让主机进入睡眠模式。 提示 若主机处于锁定状态(POWER(电源)/HOLD(固定)按钮滑至下方),即使已选择[进入睡眠模式],主机仍不会在关闭屏幕盖时进入睡眠模式。 屏幕盖关闭时显示的画面 在屏幕盖关闭时按下L/R按钮,即可变更显示的内容。 同时按下L/R按钮 每次同时按下L/R按钮,可交替显示月历/
问题内容: 我需要在Java Web应用程序停止或tomcat停止时保存一些数据。如何才能做到这一点?编辑:如果我使用jvm shutdown钩有什么缺点? 问题答案: 使用在您的web.xml 中实现ServletContextListener的类:
我想把这张图片设置为我的应用程序的背景,但没有用: 我的原木猫: 活动main.xml:
我知道这个问题在网站上被问了很多,但是,我似乎找不到一个解决办法。当应用程序未运行时,不调用我的BOOT_COMPLETED接收器。 清单: 如果应用程序正在运行,并且我使用 事件被正确接收,但是,如果应用程序被关闭,事件不会被接收,也不会在启动时被接收。 我已经安装了应用程序,然后启动了它几次,以确保它已经注册。我对这件事很迷茫,所以任何建议都将非常感谢。
所以我正在制作一个简单的寻宝游戏。我已经实现了SurfaceHolder.Callback和OnTouchListener方法。当触摸屏幕以挖掘宝藏时,应用程序崩溃。 下面是 DrawSurface 类的代码: 以下是我收到的错误消息: E/AndroidRuntime: FATAL EXCEPTION: main Process:justinrhinehart.cse.fullsail.trea