How to run service not on main thread?

前端 未结 2 1894
春和景丽
春和景丽 2021-02-19 23:17

I\'m trying to launch service and then open socket to have connection with server.

On button click I create new Thread and then st

2条回答
  •  不知归路
    2021-02-20 00:02

    Move this code to your thread:

    try {
        InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
        socket = new Socket(serverAddr, SERVERPORT);
        Scanner scanner = new Scanner(socket.getInputStream());
        message = scanner.nextLine();
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    Just as an example (I'm not sure it this fits to your task):

    Thread t = new Thread(){
            public void run(){
                try {
                    InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
                    socket = new Socket(serverAddr, SERVERPORT);
                    Scanner scanner = new Scanner(socket.getInputStream());
                    message = scanner.nextLine();
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
                mIntent= new Intent(MainActivity.this, ConnectonService.class);
                mIntent.putExtra("KEY1", "Value used by the service");
                context.startService(mIntent);
            }
        };
    t.start();
    

    You should know that a service is running on the UI thread, so you got this error. Check this nice site for more information about various threading approaches in Android.

提交回复
热议问题