来自MainActivity的http连接

时间:2014-06-23 10:15:34

标签: android multithreading

我有点问题。在我的Android应用程序中,我必须连接到在线服务器。 应使用单击按钮和后台服务调用连接。我知道我必须将网络连接放在一个线程中,但我不知道它是如何工作的。 我把调用放在一个自己的方法中创建一个线程,但在编译时我得到了一条错误信息。

这是我的代码:

按钮:

 ImageView refresher = (ImageView)findViewById(R.id.imgRefresh);
    refresher.setOnClickListener(new OnClickListener(){
    @Override
            public void onClick(View arg0) {                                        
                    httpThread();                           
                    }                       
                });   

线程方法:

private void httpThread(){
    final Handler h = new Handler();
    Thread thread = new Thread(new Runnable(){
        @Override
        public void run() {
            h.post(new Runnable(){

                @Override
                public void run() {
                    try{                            
                        vomServerholenUndSpeichern();
                        FileInputStream inStream = null;
                        try {
                            inStream = openFileInput("test.xml");
                        } catch (FileNotFoundException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        try {
                            leseDatei(inStream);
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        createListView("test.xml");
                        System.out.println(inStream);
                        drawListView();
                    } catch (Exception e){
                        e.printStackTrace();
                    }                           
                }

            });

        }       
    });
    thread.start();     
}

有人可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

你必须使用AsyncTask,并不困难。

AsyncTask是在连接操作期间避免阻止UI的必要条件,AsyncTask的doInbackGround方法用于此类操作(它在与UI不同的线程中运行),而int onPostExecute(在UI上运行)您将管理您的httpResult的任务;)

相关问题