簡體   English   中英

非活動類的處理程序

[英]Handler from a non-Activity class

我們可以執行嗎

handler.postDelayed(runnable,400)

來自非Activity課?

我有一個控制器類,假設它是一個適配器。 我們可以在那里使用Handler嗎?

我嘗試使用斷點調試我的應用程序,但控件未達到

handler.postDelayed(runnable,400)

有人可以幫我嗎?

實際上,我正在使用OCR。 如果進行了某些匹配,我想自動返回到我的主要活動。 我想它是個彎針。 我還需要拍攝照片。 為此,我需要使用處理程序。

我們可以從非Activity類執行handler.postDelayed(runnable, 400)嗎?

是的你可以。

任何Handler都與Thread (不是Activity或另一個對象)和Thread的消息隊列相關聯。 Handlers后/ 處理 MessagesRunnables到/ 由處理的隊列Looper

當您在主線程中(例如在Activity類中)創建Handler時,您會將消息和Runnables (帶有post()postDelayed()sendMessage()等)發布/發送到運行循環中。 但是,默認情況下,除非先創建一個調用Looper.loop()然后調用Looper.prepare()線程,否則線程不會運行循環。

如果在后台線程上創建的Handler程序將消息和Runnables到主線程的隊列中

  • 將主線程的Looper傳遞給Handler構造函數
  • 或使用new Handler(Looper.getMainLooper())

我嘗試使用斷點調試我的應用程序,但控件無法達到。

我認為無論是你的代碼的邏輯從來沒有達到“控制”或handler ,而不准備和循環后台線程內創建Looper ,以便runnable不能被處理的handler

我用定時器。 它為我工作。 大聲笑。

    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            Intent data = new Intent();
            data.putExtra(OcrCaptureActivity.TextBlockObject, textBlock.getValue());
            Log.d("Read Text : ", textBlock.getValue());
            Base.base_activity.setResult(CommonStatusCodes.SUCCESS, data);
            Base.base_activity.finish();
        }
    }, POST_DELAYED_TIME);

暫無
暫無

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

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