1

在这个非常简单的代码示例中,消息每隔一段时间就会丢失。这里有什么问题?

public class AndroidTesterActivity extends Activity {
   private static final int END = 500000;
   private static int i = 0;
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      i=0;
   }

   @Override
   public void onResume()
   {
      super.onResume();
      while(i < END)
      {
         Log.d("x", ""+i++);
      }
      Log.e("x", "END");
   }
}

例如,我收到两条连续的日志消息 139371 和 140001 ......所以 630 条消息只是丢失了,即使i被计数了?i不写Log怎么算?我已经搜索过,如果其他人已经有同样的问题,但没有找到任何东西。

谢谢你的帮助


只是一个没有根据的猜测: Log 类不会直接推送所有内容,我认为它会在某些特定条件下收集和推送。由于您的循环应该非常快,因此在某些情况下,日志缓冲区(或其他内容)可能会在刷新之前被覆盖。

我会尝试在一个线程中进行,并sleep()在两者之间调用一些毫秒。也许您可以重现此行为或找到此行为消失的值。

4

1 回答 1

2

只是一个没有根据的猜测: Log 类不会直接推送所有内容,我认为它会在某些特定条件下收集和推送。由于您的循环应该非常快,因此在某些情况下,日志缓冲区(或其他内容)可能会在刷新之前被覆盖。

我会尝试在一个线程中进行,并sleep()在两者之间调用一些毫秒。也许您可以重现此行为或找到此行为消失的值。

于 2012-04-04T08:46:34.857 回答