Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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_Sensors - Fatal编程技术网

Java Android传感器和环路

Java Android传感器和环路,java,android,sensors,Java,Android,Sensors,- 如果我插入while,光传感器不会接受任何光值。如果我把这段代码(除了while)放在另一个线程中也是一样的。为什么?听众不应该在backgorund工作吗?我需要等待一点(我会取代,而whti其他东西)后,传感器注册,然后再检查光值。我该怎么办?你绝对不能 public void onCreate() { new lt().start() while(true); } class lt extends Thread {

-


如果我插入while,光传感器不会接受任何光值。如果我把这段代码(除了while)放在另一个线程中也是一样的。为什么?听众不应该在backgorund工作吗?我需要等待一点(我会取代,而whti其他东西)后,传感器注册,然后再检查光值。我该怎么办?

你绝对不能

 public void onCreate()
    {
            new lt().start()
            while(true);
    }
class lt extends Thread
{
    public void run()
    {
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mSensorManager.registerListener(this, mSensorManager
                .getDefaultSensor(Sensor.TYPE_LIGHT),
                SensorManager.SENSOR_DELAY_FASTEST);
        while(true);
    }
}
在onCreate()中

它连接Android中的主(UI)线程

=========================

Android运行一个事件循环。回调已计划在事件循环中运行,但在控件从onCreate()返回之前无法运行。因此,您的程序将挂起,直到收到应用程序未响应的错误

这: 这是一个开始阅读Android代码下的机制的好地方

==================

使用线程的代码更糟糕,因为主线程仍然挂起在onCreate()中,但现在您正尝试为IT线程安排回调,但它没有运行事件循环。(更不用说它现在也挂了一段时间了(没错);)


试试这个:

 while(true);

阅读下面的例子:

while(true)将继续运行,这是一个永无止境的循环。如果您想等待,您需要使用某种类型的
计时器类。请参见,或者我刚刚注意到新的lt().start()行中缺少分号。我假设这是问题中的一个输入错误,但行实际上以分号结尾;你是说即使我创建了一个新线程,我仍然在onCreate()中?新线程是在新的IT.start()中创建的;线路。下一个语句,无限while循环,仍然在旧线程中运行,所以是的,您仍然在运行onCreate()。我仍然无法理解这一点。为什么他们在同一条线上?如果我使用asynctask而不是线程,我可以做些什么吗?我从onCreate启动了线程。在创建注册侦听器的asynctask之后,我在线程中放置了一个sleep(问题的while)。这是可行的,但我不知道这是否是一个好的解决方案。
 while(true);
public void onCreate()
{
    super.onCreate();
    setContentView(R.layout.myLayout);
    [other activity initialization code]
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    mSensorManager.registerListener(this, mSensorManager
            .getDefaultSensor(Sensor.TYPE_LIGHT),
            SensorManager.SENSOR_DELAY_FASTEST);
}