首页 > 解决方案 > 如何使用 webview 和 ksoapcall Timer 在 Android 中为 UI 线程设置当前活动

问题描述

E/Error: java.lang.NullPointerException在运行 Android Timer 时遇到了问题。

如何设置当前活动以在 UI 线程上运行?

完整的错误消息:

E/Error: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.runOnUiThread(java.lang.Runnable)' on a null object reference
E/AndroidRuntime: FATAL EXCEPTION: Timer-0

这是我的代码,请参阅下面的评论以了解异常发生的位置:

            //set a new Timer

            timer = new Timer();
            initializeTimerTask(webView);

            //schedule the timer, after the first 5000ms the TimerTask will run every 10000ms
            timer.schedule(timerTask, 10000, 10000); //
        }
    });

    return root;
}

public void initializeTimerTask(final WebView wv) {

// HERE IS WHERE THE NULL REFERENCE ERROR OCCURS (on context):

    final Activity context = this.context;

    timerTask = new TimerTask() {
        @Override
        public void run() {
            context.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    wv.reload();
                    new SoapCall().execute();
                }
            });
        }
    };
}

标签: javaandroidandroid-activitytimerui-thread

解决方案


你总是可以调用它来在 UI 线程上运行一些东西:

(new Handler(Looper.getMainLooper())).post(new Runnable() {
    @Override
    public void run() {

    }
});

推荐阅读