android - App showing Unfortunately, (appname) stopped. up to 3 times after closing the application -


i beginner trying learn service in android.... when run following code, working correctly when app active. after closing app recent app list, showing dialog "unfortunately, (appname) stopped." 3 times , stops. when not calling create_socket() working correctly expected showing log of value i..... please help.

package com.example.runwaylabz.canvi;  import android.app.alarmmanager; import android.app.pendingintent; import android.app.service; import android.content.context; import android.content.intent; import android.os.asynctask; import android.os.ibinder; import android.os.systemclock; import android.support.annotation.nullable; import android.util.log;  import org.apache.commons.io.ioutils;  import java.io.ioexception; import java.io.inputstream; import java.io.outputstream; import java.net.socket;   import xdroid.toaster.toaster;  public class socketconnection extends service {     private static socket socket;     private static inputstream inputstream;     private static outputstream outputstream;     private static string ip;     private static int port;     private static socketconnection socketconnection = null;  public socketconnection() {     super(); }  @override public int onstartcommand(intent intent, int flags, int startid) {      asynctask asynctask = new asynctask() {         @override         protected object doinbackground(object[] objects) {              new thread(new runnable() {                 @override                 public void run() {                     int = 1;                     while (i > 0) {                          log.i("hi", "" + i);                         i++;                      }                 }             }).start();               create_socket();                return null;         }     };     asynctask.execute();        return start_sticky; }  private static class instancehelper {     private static final socketconnection instance = new socketconnection(); }  public static socketconnection getinstance(string ip, int port) {      socketconnection = instancehelper.instance;     socketconnection.setip(ip);     socketconnection.setport(port);      return socketconnection;  }  @nullable @override public ibinder onbind(intent intent) {     return null; }    @override public void oncreate() {     super.oncreate(); }  public void create_socket() {      new thread(new runnable() {         @override         public void run() {             try {                 socket = new socket(ip, port);                 if(socket.isconnected()){                     log.w("debug","socket created");                 }              } catch (ioexception e) {                  e.printstacktrace();             }             try {                 inputstream = socket.getinputstream();             } catch (ioexception e) {                 e.printstacktrace();             }             try {                 outputstream = socket.getoutputstream();             } catch (ioexception e) {                 e.printstacktrace();             }         }     }).start();  }   public void close_socket(){     new thread(new runnable() {         @override         public void run() {                  ioutils.closequietly(inputstream);                 inputstream=null;              if(inputstream==null){                 log.w("debug","inputstream closed");             }             else {                 log.w("debug","inputstreaam not closed");             }              while(inputstream==null){                 ioutils.closequietly(inputstream);             }                   ioutils.closequietly(outputstream);                 outputstream=null;              if(outputstream==null){                 log.w("debug","outputstream closed");             }             else {                 log.w("debug","outputstreaam not closed");             }              while(outputstream==null){                 ioutils.closequietly(outputstream);             }              try {                 socket.close();                 socket=null;             } catch (ioexception e) {                 if(!socket.isclosed()){                     try {                         socket.close();                         socket=null;                     } catch (ioexception e1) {                         e1.printstacktrace();                     }                  }                 e.printstacktrace();             }              if(socket==null){                 log.w("debug","socket closed");             }             else {                 log.w("debug","socket not closed");             }          }     }).start();       }  public static void writeouputstream(final string outputstreamstring) {      new thread(new runnable() {         @override         public void run() {             try {                  ioutils.write(("12345678" + outputstreamstring).getbytes("ascii"), outputstream);              } catch (ioexception e) {                 e.printstacktrace();             }         }     }).start();  }   public void setport(int port) {     this.port = port; }  public void setip(string ip) {     this.ip = ip; }  public static void setsocket(socket socket) {     socketconnection.socket = socket; }  public static void setoutputstream(outputstream outputstream) {     socketconnection.outputstream = outputstream; }  public static void setinputstream(inputstream inputstream) {     socketconnection.inputstream = inputstream; }  public static inputstream getinputstream() {     return inputstream; }  public int getport() {     return port; }  public static outputstream getoutputstream() {     return outputstream; }  public static socket getsocket() {     return socket; }  public string getip() {     return ip; }  @override public void ontaskremoved(intent rootintent) {      close_socket();      intent restartservice = new intent(getapplicationcontext(), getinstance(ip,port).getclass());     restartservice.setpackage(getpackagename());     pendingintent restartservicepi = pendingintent.getservice(             getapplicationcontext(), 1, restartservice,             pendingintent.flag_one_shot);     alarmmanager alarmservice = (alarmmanager)getapplicationcontext().getsystemservice(context.alarm_service);     alarmservice.set(alarmmanager.elapsed_realtime, systemclock.elapsedrealtime() +1000, restartservicepi); } } 

and logcat after closing application is

39 26530-26558/com.example.runwaylabz.canvi w/system.err: java.net.connectexception: failed connect localhost/127.0.0.1 (port 0) after 90000ms: isconnected failed: econnrefused (connection refused) 08-01 20:21:32.839 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ libcore.io.iobridge.isconnected(iobridge.java:267) 08-01 20:21:32.839 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ libcore.io.iobridge.connecterrno(iobridge.java:191) 08-01 20:21:32.839 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ libcore.io.iobridge.connect(iobridge.java:127) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.plainsocketimpl.connect(plainsocketimpl.java:188) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.plainsocketimpl.connect(plainsocketimpl.java:168) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.socket.startupsocket(socket.java:609) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.socket.tryalladdresses(socket.java:137) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.socket.<init>(socket.java:187) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.net.socket.<init>(socket.java:159) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ com.example.runwaylabz.canvi.socketconnection$2.run(socketconnection.java:105) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ java.lang.thread.run(thread.java:818) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err: caused by: android.system.errnoexception: isconnected failed: econnrefused (connection refused) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:     @ libcore.io.iobridge.isconnected(iobridge.java:252) 08-01 20:21:32.840 26530-26558/com.example.runwaylabz.canvi w/system.err:   ... 10 more 08-01 20:21:32.841 26530-26558/com.example.runwaylabz.canvi e/androidruntime: fatal exception: thread-29548                                                                           process: com.example.runwaylabz.canvi, pid: 26530                                                                           java.lang.nullpointerexception: attempt invoke virtual method 'java.io.inputstream java.net.socket.getinputstream()' on null object reference                                                                               @ com.example.runwaylabz.canvi.socketconnection$2.run(socketconnection.java:115)                                                                               @ java.lang.thread.run(thread.java:818) 


Comments