Java android.os.NetworkOnMainThreadException-对于按钮单击
我有一个Java android.os.NetworkOnMainThreadException-对于按钮单击,java,android,networkonmainthread,Java,Android,Networkonmainthread,我有一个android.os.NetworkOnMainThreadException错误。我读过一些线程,为了避免这种情况,我们应该执行异步任务。然而,我不知道如何做按钮点击事件。下面是我的代码 MainActivity.java: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) {
android.os.NetworkOnMainThreadException
错误。我读过一些线程,为了避免这种情况,我们应该执行异步任务。然而,我不知道如何做按钮点击事件。下面是我的代码
MainActivity.java:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button test = (Button) findViewById(R.id.testbutton);
test.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
DynamoDBClient dbClient = new DynamoDBClient();
dbClient.DynamoDB();
dbClient.createTable();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
你们能给我一个关于如何使用AsyncTask进行按钮点击事件的建议吗?我试过了,但失败了。谢谢。这是正确的方法:
public class DoYoreWork extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
DynamoDBClient dbClient = new DynamoDBClient();
dbClient.DynamoDB();
dbClient.createTable();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String page) {
// onPostExecute
}
}
您正在主线程上执行网络操作,只需获取一个线程并在该线程的run方法中写入
onClick()
code,然后在onClick(
)中启动该线程,如下所示
Thread t=new Thread(){
public void run(){
try
{
DynamoDBClient dbClient = new DynamoDBClient();
dbClient.DynamoDB();
dbClient.createTable();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
在OnClick()中
希望这能对您有所帮助。但我看到了您的个人资料,还有一个是您的笑话和ans:-)
Thread t=new Thread(){
public void run(){
try
{
DynamoDBClient dbClient = new DynamoDBClient();
dbClient.DynamoDB();
dbClient.createTable();
} catch (Exception e)
{
e.printStackTrace();
}
}
}
test.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick (View view)
{
t.start();
}
}