簡體   English   中英

Android:從 UI 線程啟動工作線程掛起應用程序

[英]Android: start a worker thread from UI thread hang the application

我寫了下面的代碼。 每次我運行它時,應用程序都會停止。 你能幫我任何想法嗎?

如果我不啟動工作線程,代碼就可以了。 我的問題是:

我可以從 UI 線程上的onCreate function 啟動工作線程嗎?

public class MainActivity extends AppCompatActivity {

    private DrawerLayout mDrawerLayout;
    private Bluetooth mBluetooth = null;
    private Gauge mGauge;
    private Obd2 mObd2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        android.support.v7.widget.Toolbar myToolbar = findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);

        mGauge = findViewById(R.id.gauge1);
        mGauge.setValue(120);
        mBluetooth = new Bluetooth();
        try {
            mBluetooth.connect();
        } catch (IOException e) {
        }
        mObd2 = new Obd2(mBluetooth);
        mObd2.command(obd2CommandEnum.RESET);

        runRPMThread();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        MenuInflater inflater = new MenuInflater(this);
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    private void runRPMThread() {

        new Thread() {
            public void run() {
                while (true) {
                    try {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mGauge.setValue(mObd2.rpm());
                            }
                        });
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
    }

}

剛剛調試到問題...在 mObd2.rpm() function 中有一個 null 指針。 我需要通過藍牙連接到我的汽車來運行應用程序。 沒有那個,我有一個 null 指針......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM