繁体   English   中英

关闭应用程序时,Android服务继续断开连接

[英]Android Service continues to disconnect when closing the application

我以前设法使我的服务继续运行。 但是今天,当我回到应用程序以继续使用该应用程序时,我注意到该服务在应用程序关闭后已断开连接,这是以前从未发生过的。

我在主要活动中像这样启动服务:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        if(savedInstanceState == null) {
            setContentView(R.layout.activity_main);
            Intent i  = new Intent(MainActivity.this, SystemWebService.class);
            SystemWebService.setMain(this);
            MainActivity.this.startService(i);

        }

SystemWebService类中的代码如下所示:

 public class SystemWebService extends Service {

        private static WebView webdemo;
        private static MainActivity ma;
        //Context dex;

        @Nullable
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }

        @Override
        public  int onStartCommand(Intent intent, int flags, int startId){
            // let the service continue until stopped
            Toast.makeText(this, "Service has started", Toast.LENGTH_SHORT).show();
            return START_STICKY;
        }

        @Override
        public void onDestroy(){
            super.onDestroy();
            Toast.makeText(this, "Service has been destroyed", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCreate() {
            super.onCreate();

        }

        public static void setMain(MainActivity a) {
            ma = a;
            SystemWebService sws = new SystemWebService();
            sws.setView();
        }
}

这是设置网络视图的代码

public  void setView() {
        webdemo = (WebView) ma.findViewById(R.id.webdemo);
        webdemo.addJavascriptInterface(new SystemWebService.WebAppInterface(this), "Android");
        webdemo.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest url){
                return false;
            }
        });
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            webdemo.getSettings().setJavaScriptEnabled(true);
            webdemo.getSettings().setDomStorageEnabled(true);
            webdemo.getSettings().setAllowFileAccessFromFileURLs(true);
            webdemo.getSettings().setAllowUniversalAccessFromFileURLs(true);
        }

        webdemo.loadUrl("file:///android_asset/_wv.html");
    }

Webview建立了到我们服务器的连接,我通常会在日志中看到数据显示。 在关闭应用程序之后,我仍将继续看到不断通过的数据流,但是就目前而言,我什么也没看到,只有消息“应用程序终止”。

我似乎无法理解发生了什么。

建议不要将活动的引用传递给服务,并使其保持静态实例。 在您的活动或服务的生命周期中,它可能导致意外行为。

请改用绑定服务。 在此处查看文档: https : //developer.android.com/guide/components/bound-services.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM