android.os.NetworkOnMainThreadException on service start on android

前端 未结 4 1246
忘了有多久
忘了有多久 2020-12-11 16:40

after trying my brand new service on android i get this:

i guess is something related to the manifest file and permissions, the service is started after the last act

相关标签:
4条回答
  • 2020-12-11 16:56

    Create function:

    Thread thread = new Thread(new Runnable(){
        @Override
        public void run() {
           .......
        }
    });
    

    And call it from onStartCommand

    thread.start(); 
    
    0 讨论(0)
  • 2020-12-11 17:07

    This happens because you are doing a network operation on the main thread, and this is not allowed on Android 3.0 and above. Even though it is in a service, services are run on the UI thread unless you specifically launch them in another thread or create a thread inside it.

    You can fix this by running the task in a service off the main UI thread, by using a Thread or an AsyncTask.

    Try creating a new thread in onStartCommand(), as suggested by @CommonsWare.

    0 讨论(0)
  • 2020-12-11 17:08

    As per the documentation, even though you use a Service to perform long running operations, the Service itself runs on the application's main thread. So you have to spawn a new thread to perform potentially long running tasks like network access.

    Android's StrictMode actually checks for network operations performed on the main thread and throws a NetworkOnMainThreadException.

    0 讨论(0)
  • 2020-12-11 17:10

    Try this. How to fix android.os.NetworkOnMainThreadException?

    Read this thread carefully.

    I hope this will solve your problem.

    0 讨论(0)
提交回复
热议问题