在Service中建立socket,avtivity結束時會中斷socket求解
我在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
楼主可以参考下PersistentServiceTest:
https://github.com/winfirm/android-develop-toolkit/tree/master/PersistentServiceTest
添加了之後 .APK連安裝都不能安裝耶
@aa4life 肯定是写错了.比如 android:process=":alarmSvr"
@aa4life 两个不同进程,你之前是不进程傻了。
在manifest的AlarmListeningService 的android:process 添加一个新进程名