如何使用 AsyncTask 连接到 Android 中的网络

How to connect to network in Android using AsyncTask

我在 Android

中编写了如下代码以连接到网络
public class MainActivity extends ActionBarActivity {

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

        InitTask task = new InitTask();
        Toast.makeText(getApplicationContext(), task.doInBackground(), Toast.LENGTH_LONG).show();
    }

    private class InitTask extends AsyncTask<Void, Void, String>{
          protected String doInBackground(Void... p){

          // Do network thing...

          return str;
        }
    }
}

我使用了 AsyncTask 但出现了 NetworkOnMainThreadException

在main activity 中不允许将AsyncTask 设为inner class 吗? (我在http://developer.android.com/training/basics/network-ops/connecting.html中举了个例子)

有什么问题?

是调用.doInBackground(),你必须通过.execute(params);

执行任务

I used AsyncTask but NetworkOnMainThreadException occurs.

因为您正在通过创建 InitTask class 对象来调用 doInBackground 方法。

在其他线程中执行doInBackground方法调用task.execute()方法启动AsyncTask并在doInBackground方法执行时使用onPostExecute方法显示Toast消息完成:

 @Override
   protected void onPostExecute(String result) {
              Toast.makeText(getApplicationContext(),
               "Task Completed!", Toast.LENGTH_LONG).show();   
   }

以上所有答案都大致正确,但 none 是准确的。您需要执行的唯一代码行就是这一行。 new InitTask().execute();
随时随地执行此操作,以执行后台任务。
也可以看看官方 android guide
我希望这能回答你的问题。