以下是什么代码? Android Surface View

时间:2012-02-12 01:26:28

标签: android

我想使用Surface View创建一个指南针,我发现下面的代码......但我不知道下面的代码试图实现什么,任何想法?

这是一种实施方法。我认为该方法应该被调用一次并且线程永远运行,除非调用onPause方法...但是当我尝试运行下面的代码时,Paint类只被调用一次然后退出...更新的位置传感器被忽视了。请帮忙。

@Override
public void surfaceCreated(SurfaceHolder holder) {
    // TODO Auto-generated method stub

    this.runDrawingThread = true;

    new Thread(new Runnable()
    {

      public void run()
      {     
            long l1 = System.currentTimeMillis();
            long l2 = 0L;
            int i = 0;
            int j = 0;
            long l3 = System.currentTimeMillis();

            if (!Painter.this.runDrawingThread){            
              return;
            }
            if (j < 2)
            {
              Painter.this.onPaint(l3, true);
              j++;
              if ((l3 - l2) / 1000L < 1L)         
              l2 = l3;
            }

            for (i = 0; ;i++)
            {
                 Log.i("test", "i value " + i);
              while (true)
              {

                l1 += 16L;
                l3 = l1 - l3;
                if (l3 < 0L)
                  break;
                try
                {
                    Log.i("inside","inside the thread");
                  Thread.sleep(l3);
                }
                catch (Exception localException)
                {

                }
              }

              Painter.this.onPaint(l3, false);
              break;
              }         


      }
    }).start();
}

1 个答案:

答案 0 :(得分:1)

嗯...好奇....

首先,我不知道这个Painter类是什么。

if (j < 2)很奇怪,因为我没有看到任何会从初始化值0改变它的东西。

“忽略了传感器的位置。”这可能是因为我在这里看不到任何可以访问手机传感器的东西。

此代码是否始终有效?我建议你找一些其他资源,比如这个:http://www.anddev.org/other-coding-problems-f5/android-compass-tutorial-t11674.html

<强>更新: 没有结束条件的for循环,最后只是休息一下?有什么意义呢?

“线程永远运行”不是我所看到的。您有while(true),但如果if (l3 < 0L)小于零,l3 = l1 - l3;将为真,因为l3的值应高于l1。它击中了中断,然后在for循环结束时触及中断,从而退出线程。

很难说你需要做什么,因为我真的不知道你在这里要做什么。