我是一个相对较新的Android程序员,我想知道如何在4.0.3中从互联网上读取文本。我一直在寻找给我一个网络主要异常的代码:http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html并且想知道是否有人可以提供一些示例代码来解决这个问题,作为参考,我得到了我试图在这里使用的代码:{{3} }。非常感谢。
答案 0 :(得分:3)
在Honeycomb和Ice Cream Sandwich(即Android 3.0+)中,您无法在主线程(onCreate()
,onPause()
,onResume()
等)中连接到互联网,而您不得不开始一个新的线程。这种情况发生变化的原因是因为网络操作可以使应用程序等待很长时间,如果您在主线程中运行它们,整个应用程序就会变得无法响应。如果您尝试从主线程连接,Android将抛出NetworkOnMainThreadException
。
要绕过此功能,您可以从新线程运行网络代码,并使用runOnUiThread()
在主线程中执行操作,例如更新用户界面。通常,您可以执行以下操作:
class MyActivity extends Activity {
public onCreate(Bundle savedInstanceState) {
super.onCreate();
// Create thread
Thread networkThread = new Thread() {
@Override
public void run() {
try {
// this is where your networking code goes
// I'm declaring the variable final to be accessible from runOnUiThread
final String result = someFunctionThatUsesNetwork();
runOnUiThread(new Runnable() {
@Override
public void run() {
// this is where you can update your interface with your results
TextView myLabel = (TextView) findViewById(R.id.myLabel);
myLabel.setText(result);
}
}
} catch (IOException e) {
Log.e("App", "IOException thrown", e);
}
}
}
}
}
答案 1 :(得分:0)
您需要完成HTTP请求。网上有很多例子可供选择。尝试here开始。