2016-10-13 4 views
-2

Я получаю NetworkOnMainThreadException, но, как я вижу, он не находится в основном потоке. Вот мой код (я использую библиотеку из svnkit.com)android: NetworkOnMainThreadException в новой теме?

public class MainActivity extends Activity{ 

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

     Thread thread = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 
        sendFiles(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
     thread.run(); 
    } 

    void sendFiles() throws SVNException, IOException {  
     DAVRepositoryFactory.setup(); 
     SVNURL url = SVNURL.parseURIEncoded("..."); 
     SVNRepository repository = DAVRepositoryFactory.create(url); 
     ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager("...", "...".toCharArray()); 
     repository.setAuthenticationManager(authManager); 
     long r= repository.getLatestRevision(); 
    } 
} 

исключение выбрасывается в repository.getLatestRevision(); (и, конечно, пойманной в run()). Может ли кто-нибудь объяснить мне, почему?

+0

Поскольку вы используете поток пользовательского интерфейса для работы в сети. Используйте 'AysncTask' Для получения дополнительной справки .. Прочитайте [здесь] (https://developer.android.com/reference/android/os/AsyncTask.html) –

ответ

0

Да, конечно. Вы вызываете свой Thread.run() на основной асад. Чтобы избежать этой ошибки, используйте start вместо run.

Смежные вопросы