gpt4 book ai didi

新线程内的 android.os.networkonmainthreadexception

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:48 25 4
gpt4 key购买 nike

我知道你不能在主线程中进行网络操作,因为 Android 3.0.因此,我在一个新的 Thread 中进行了调用:

button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
user=login.getText().toString();
password=pass.getText().toString();
params.add(new BasicNameValuePair("user", user));
params.add(new BasicNameValuePair("pass", password));
Thread thread=new Thread(){
public void run(){
try {
// Throws exception here
response=CustomHttpClient.executeHttpPost(urlogin, params);
response=response.replaceAll("\\s+","");

} catch (Exception e) {
e.printStackTrace();
}
if(response.equals("ok")){

Intent home=new Intent(c, HomeActivity.class);
home.putExtra("username", user);
startActivity(home);
Toast toast=Toast.makeText(
c, getString(R.string.welcome), Toast.LENGTH_LONG);
toast.show();
}else{
if(response.equals("fallo")){
runOnUiThread(new Runnable() {

@Override
public void run() {
Toast toast=Toast.makeText(
c, R.string.nologin, Toast.LENGTH_LONG);
toast.show();
login.setText("");
pass.setText("");
}
});
}else if(response.equals("nologin")){
runOnUiThread(new Runnable() {

@Override
public void run() {
Toast toast=Toast.makeText(
c, R.string.nouser, Toast.LENGTH_LONG);
toast.show();
login.setText("");
pass.setText("");

}
});
}
}
}
};
thread.run();
}
});

但是,尽管我在主线程上(或者至少我认为......),我还是收到了那个异常

最佳答案

使用 run() 不会启动一个单独的线程,它实际上会在启动它的同一线程上启动一个可运行对象。

您需要使用start() 来启动一个新线程。

关于新线程内的 android.os.networkonmainthreadexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18700149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com