新线程内的NetworkOnMyThreadExcepion

时间:2014-06-23 13:28:52

标签: android multithreading postgresql exception

我需要连接到postgreSQL。当我尝试运行此代码时,我遇到异常:NetworkOnMyThreadExcepion。我已经制作了新的主题,但它仍然是同样的问题。

...
final ErrorFragment error = new ErrorFragment();
...

new Thread(new Runnable(){
    public void run(){
        /* Properties prop, String url*/
        try {
            Connection conn = DriverManager.getConnection(url, prop);
        } catch (final SQLException e) {
            MainActivity.this.runOnUiThread(new Runnable(){
                public void run(){
                    error.setArguments(exceptionToBundle(e));
                    error.show(getFragmentManager(), "tagError");
                }
            });
        }
    }
}).run();

...
private Bundle exceptionToBundle(Exception e){
...
}

1 个答案:

答案 0 :(得分:0)

正如@tyczj已经提到的那样,您必须使用start()来启动Threadrun()是将在新Thread中执行的方法。如果您直接致电run(),请在当前Thread上运行您的代码。

所以不要这样:

new Thread(...).run();

试试这个:

new Thread(...).start();