Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android线程画布传感器问题_Java_Android_Eclipse_Multithreading_Canvas - Fatal编程技术网

Java Android线程画布传感器问题

Java Android线程画布传感器问题,java,android,eclipse,multithreading,canvas,Java,Android,Eclipse,Multithreading,Canvas,我在创建SensorManager和在屏幕上输出加速度计值时遇到了一些问题,屏幕上有一个绿色圆圈,当你倾斜手机时,这个圆圈会移动。这是乔纳森·哈勃的山姆《24小时自学android游戏编程》中的一个例子。我查了又查,我的代码和他的一模一样。基本上,它是一个自定义的SurfaceHolder画布,使用线程重复更新。这里是主要的活动,游戏(是的,我知道,进口很混乱): 我只想指出,暂停是直接调用的,而不是当我从应用程序中取出标签时。退出和进入应用程序不会使程序继续,它只是停止。屏幕上除了变成白色、进

我在创建SensorManager和在屏幕上输出加速度计值时遇到了一些问题,屏幕上有一个绿色圆圈,当你倾斜手机时,这个圆圈会移动。这是乔纳森·哈勃的山姆《24小时自学android游戏编程》中的一个例子。我查了又查,我的代码和他的一模一样。基本上,它是一个自定义的SurfaceHolder画布,使用线程重复更新。这里是主要的活动,游戏(是的,我知道,进口很混乱):


我只想指出,暂停是直接调用的,而不是当我从应用程序中取出标签时。退出和进入应用程序不会使程序继续,它只是停止。屏幕上除了变成白色、进入横向模式和其他什么都没有发生。很抱歉,这篇文章太长了,但我不知道发生了什么,所以我尝试将所有相关来源都包括在内。如果您有任何建议、想法,当然还有任何解决方案,请在下面进行评论或回复。感谢所有的帮助。如果您需要任何其他文件,我将添加它们,请告诉我

我在用同一本书,也有同样的问题。。。为了寻找答案,我无意中遇到了你的问题,所以我想我应该回过头来,把我发现的东西传递出去(在经历了很多痛苦和痛苦之后,哈哈)

问题似乎出在暂停过程中(不是onPause,而是DrawView中的暂停)。我认为这是因为线程没有正确停止,他们试图在恢复过程中重新启动同一线程

将其更改为以下代码后,一切似乎都正常工作

public void pause() {
        gameloop.interrupt();
        running = false;
        try{
            gameloop.join();
         } catch (InterruptedException e) {}
    }
06-17 21:47:40.760: W/asset(14951): Copying FileAsset 0xb85d1e68 (zip:/data/app/com.example.sensordemo-1/base.apk:/resources.arsc) to buffer size 157568 to make it aligned.
06-17 21:47:40.770: E/Typeface(14951): SANS_LOC file not found.
06-17 21:47:40.790: I/Game(14951): draw view made
06-17 21:47:41.090: E/SensorManager(14951): uid = 10196
06-17 21:47:41.100: E/SensorManager(14951): uid = 10196
06-17 21:47:41.100: I/Game(14951): onCreate()
06-17 21:47:41.110: I/Game(14951): resume
06-17 21:47:41.110: I/Game(14951): drawview resumed
06-17 21:47:41.110: I/SensorManager(14951): registerListenerImpl: listener = com.example.sensordemo.Game@110bc638, sensor = {Sensor name="BOSCH BMA250 3-axis Accelerometer", vendor="BOSCH", version=1, type=1, maxRange=39.2266, resolution=0.038307227, power=0.1, minDelay=10000}, delay = 200000, handler = null
06-17 21:47:41.130: D/Atlas(14951): Validating map...
06-17 21:47:41.150: E/Typeface(14951): SANS_LOC file not found.
06-17 21:47:41.150: I/DrawView(14951): pausing
public void pause() {
        gameloop.interrupt();
        running = false;
        try{
            gameloop.join();
         } catch (InterruptedException e) {}
    }