在Service中建立socket,avtivity結束時會中斷socket求解

发布于 2021-11-25 03:52:33 字数 2438 浏览 978 评论 5

我在service中的代碼如下

public class AlarmListeningService extends Service{
public static final String sHost = "*.*.*.*";
public static final int sPort = 5566;
Thread thrSocket;

@SuppressWarnings("deprecation")
public void onStartCommand(Intent intent, int startId) {
    super.onStartCommand(intent, startId, startId);
    thrSocket = new thrSocket();
    thrSocket.start();
}


@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

class thrSocket extends Thread {
    Socket mSocket;

    public void run() {

        InitSocket();

        new Thread(){  
            public void run() {
                try {
                    String msg = "";
                    while (true) {
                        int count = 0;  
                        while (count == 0) {
                             count=ips.available();
                        }
                        byte[] serverdata = new byte[count];
                        ips.read(serverdata);

                    }
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }  
            } 
        }.start();  
    }

    private void InitSocket(){
        try {
            mSocket = new Socket(sHost,sPort);
            OutputStream out=mSocket.getOutputStream();
            byte[] b_client = "client".getBytes(Charset.forName("UTF-8"));
            out.write(b_client);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }
}
}

在Activity中的代碼如下

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

        Intent startAL = new Intent();
        startAL.setClass(MainActivity.this, AlarmListeningService.class);
        startService(startAL);
}

現在的問題是開啟activity後會啟動service

當我使用手機的多工按鍵把APP拉掉以後

在service中建立的socket卻會斷線(由socket server觀測得知)

理論上沒有stopService的話activity的存在與否不是不會影響到service嗎?

為什麼activity一關調socket就會斷開呢?

這個問題困擾我好幾天了

求網路上的各路英豪來解救小弟

謝謝!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

私藏温柔 2021-11-29 01:07:56

添加了之後 .APK連安裝都不能安裝耶

简单气质女生网名 2021-11-29 00:05:35

@aa4life 肯定是写错了.比如 android:process=":alarmSvr"

归属感 2021-11-28 22:33:38

@aa4life 两个不同进程,你之前是不进程傻了。

躲猫猫 2021-11-25 05:17:38

在manifest的AlarmListeningService 的android:process 添加一个新进程名

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文