为什么我的代码在主线程上运行?

MTP1376

我在onCreate方法中使用以下代码:

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

        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {


            @Override
            public void onClick(View arg0) {
                Thread thread = new Thread(new Runnable() {

                    @Override
                    public void run() {
                        try {
                            ServerSocket serverSocket = new ServerSocket(9002);
                            Socket s = serverSocket.accept();

                            DataOutputStream outputStream = new DataOutputStream(
                                    s.getOutputStream());
                            BufferedReader inputStream = new BufferedReader(
                                    new InputStreamReader(s.getInputStream()));

                            outputStream.write("Howdy! newbie".getBytes());

                            s.close();

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

它给了我一个NetworkOnMainThreadException!

当我使用以下行删除限制时,它确实起作用:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy); 

但是我为什么要使用它?

我使用了线程,为什么它不能在分离的线程上运行而在UI线程上运行?

吉鲁·拜

改变

thread.run();

thread.start();

区别:

Thread.run()不会生成新线程,而Thread.start()生成新线程,即Thread.run实际上在与调用者线程相同的线程上运行,而Thread.start()创建一个在其上运行任务的新线程。

有关更多信息,请参见运行和启动线程之间的区别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的代码在主线程上运行?

来自分类Dev

为什么我的NSOperationQueue在主线程上运行?

来自分类Dev

为什么我的NSOperationQueue在主线程上运行?

来自分类Dev

在主线程上运行代码?

来自分类Dev

在主线程上运行代码?

来自分类Dev

为什么UIWebView的AVPlayerViewController不在主线程上运行?

来自分类Dev

为什么CompletableFuture的thenAccept()无法在主线程上运行

来自分类Dev

为什么UIWebView的AVPlayerViewController不在主线程上运行?

来自分类Dev

为什么WWDC对话建议在主线程上运行非UIKit代码以修复数据争用?

来自分类Dev

ObserveOn与修改代码以在主线程上运行

来自分类Dev

为什么任务在主线程中运行?

来自分类Dev

在本机线程上在主线程上运行快速代码

来自分类Dev

为什么要在主线程上休眠才能运行Camel示例

来自分类Dev

当我指定ConfigureAwait(false)时,为什么仍在主线程上?

来自分类Dev

哪些代码将在浏览器的主线程上运行?

来自分类Dev

为什么此线程影响主线程?

来自分类Dev

另一个线程的代码如何在主线程上运行?

来自分类Dev

阻止当前线程,直到部分代码在iOS中的主线程上运行

来自分类Dev

为什么休眠主线程会更改Java中正在运行的其他线程的行为?

来自分类Dev

为什么休眠主线程会更改Java中正在运行的其他线程的行为?

来自分类Dev

在主线程上运行回调

来自分类Dev

如何从任务在主线程上运行语句

来自分类Dev

为什么异步代码在C#中的工作线程上运行

来自分类Dev

为什么唤醒后的代码在不同的线程上运行(即使设置了SynchronizationContext)?

来自分类Dev

为什么ForkJoinPool ::的invoke()阻塞主线程?

来自分类Dev

在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

来自分类Dev

如何使用CoreData在主线程上仅运行HUD和同步代码块?

来自分类Dev

在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

来自分类Dev

需要在主线程上执行什么

Related 相关文章

  1. 1

    为什么我的代码在主线程上运行?

  2. 2

    为什么我的NSOperationQueue在主线程上运行?

  3. 3

    为什么我的NSOperationQueue在主线程上运行?

  4. 4

    在主线程上运行代码?

  5. 5

    在主线程上运行代码?

  6. 6

    为什么UIWebView的AVPlayerViewController不在主线程上运行?

  7. 7

    为什么CompletableFuture的thenAccept()无法在主线程上运行

  8. 8

    为什么UIWebView的AVPlayerViewController不在主线程上运行?

  9. 9

    为什么WWDC对话建议在主线程上运行非UIKit代码以修复数据争用?

  10. 10

    ObserveOn与修改代码以在主线程上运行

  11. 11

    为什么任务在主线程中运行?

  12. 12

    在本机线程上在主线程上运行快速代码

  13. 13

    为什么要在主线程上休眠才能运行Camel示例

  14. 14

    当我指定ConfigureAwait(false)时,为什么仍在主线程上?

  15. 15

    哪些代码将在浏览器的主线程上运行?

  16. 16

    为什么此线程影响主线程?

  17. 17

    另一个线程的代码如何在主线程上运行?

  18. 18

    阻止当前线程,直到部分代码在iOS中的主线程上运行

  19. 19

    为什么休眠主线程会更改Java中正在运行的其他线程的行为?

  20. 20

    为什么休眠主线程会更改Java中正在运行的其他线程的行为?

  21. 21

    在主线程上运行回调

  22. 22

    如何从任务在主线程上运行语句

  23. 23

    为什么异步代码在C#中的工作线程上运行

  24. 24

    为什么唤醒后的代码在不同的线程上运行(即使设置了SynchronizationContext)?

  25. 25

    为什么ForkJoinPool ::的invoke()阻塞主线程?

  26. 26

    在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

  27. 27

    如何使用CoreData在主线程上仅运行HUD和同步代码块?

  28. 28

    在仅限服务的应用程序中使用SpeechRecognizer。在主线程上运行代码

  29. 29

    需要在主线程上执行什么

热门标签

归档