通知的后台服务

时间:2018-05-20 11:07:32

标签: java android service webview

我在我的Android应用程序的Notification提供程序中使用WebView,它使用JavaScriptInterface从远程Javascript文件获取信息,根据收到的服务器信息,它触发我的应用程序发送抬头通知。

所以,我已经在onCreate void:

中添加了一个JavaScript接口
OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");

并创建了WebAppInterface类

// Interfacing with Javascript Code
public class WebAppInterface {
    Context mContext;

    WebAppInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void showTempHumUnavailableNotification(String toast) {
        OnomeTempHumUnavailableNotification();
    }

    @JavascriptInterface
    public void showSecurDudeAlertNotification(String toast) {
        OnomeSecurDudeAlertNotification();
    }
}

当某个文件在远程服务器上不可用时,JavaScript文件会触发通知。

function showDHT11Alert() {
$.ajax({
    url: 'http://serveraddress/OnomeWeb/resources/data/tmp/onomeDHT11On',
    success: function () {
        $('#onomenotif_DHT11Unavailable').hide();
    },
    error: function () {
        $('#onomenotif_DHT11Unavailable').show();
        showDHT11Toast();
    },
});
}

function showDHT11Toast(toast) {
        Android.showTempHumUnavailableNotification(toast);
}

即使应用程序处于后台,通知提供程序仍然可以正常工作,但很明显,如果我从最近的应用程序屏幕关闭应用程序,通知提供程序将停止工作。现在,即使应用程序已从最近的应用程序中关闭,我也希望将此JavaScript界面​​设置为后台服务。

后台服务应该是我问题的最佳解决方案,但是如何将其与主WebView进行交互?这可能吗?

1 个答案:

答案 0 :(得分:0)

  

后台服务应该是我问题的最佳解决方案,但是   如何将其与主WebView连接?这可能吗?

不幸的是,这是不可能的。 JavaScriptInterface由您的应用程序通过调用

注入

OnomeWebContainer.addJavascriptInterface(new WebAppInterface(this), "Android");

它仅适用于您的WebView。其他WebViews不会注入它,因此无法触发您的showTempHumUnavailableNotification