我正在尝试从服务器上接收我的Android手机上的数据。我不明白为什么它总是崩溃......请帮助!
seekbarbrightness.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekbarbrightness, int progress, boolean b) {
if(b==true) {
seekbarvalue = seekbarbrightness.getProgress();
multiplier = (double) seekbarvalue / 100;
finallumens = (int) (multiplier * LoginActivity.enterlumens);
tblumens.setText(String.valueOf(finallumens) + " Lumens");
if (LoginActivity.getSocket() != null) {
try {
InputStreamReader streamReader = new InputStreamReader(LoginActivity.getSocket().getInputStream());
BufferedReader reader = new BufferedReader(streamReader);
String str = reader.readLine();
tbvolts.setText("Voltage: "+str);
} catch (IOException e) {
e.printStackTrace();
}
}
else{
Toast.makeText(MainActivity.this, "NOT connected To Socket, please disconnect and reconnect!", Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
如果删除接收数据代码,并将以下代码放在try和catch块中,则可以正常工作。
LoginActivity.getSocket().getOutputStream().write(String.valueOf(multiplier).getBytes());
我不确定我做错了什么。但下面是我在logcat中遇到的错误,我的应用程序崩溃了。
Exception in MessageQueue callback: handleReceiveCallback.
android.os.NetworkOnMainThreadException
这是我创建的异步方法。这是对的吗?以及如何在AsyncTask中提取str值并将其放入Textview的任何想法?我只能打印输出值,但不能用它设置文本。
class ReceiveData extends AsyncTask<String, Void, String> {
protected String doInBackground(String... args) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(LoginActivity.getSocket().getInputStream()));
in.readLine();
String str = in.readLine();
return str;
} catch (IOException e) {
e.printStackTrace();
return "fail";
}
}
答案 0 :(得分:0)
长时间运行的任务会给主线程带来更多负载,这就是var delay;
document.addEventListener("mousemove", function () {
callSetTimeout();
});
function callSetTimeout () {
if (!isNaN(delay)) { clearTimeout(delay); }
delay = setTimeout(function () {
console.log("do something");
}, 5000);
}
显示的原因,主线程始终用于执行更新UI等小任务。要执行长时间运行的任务,请使用AsyncTask。
https://stackoverflow.com/a/6343299/4741746
此链接向您展示如何使用AsyncTask。在android中
并且在完成任务后如果要更新UI,则可以使用AsyncTask的NetworkOnMainThreadException
方法
另请看这篇帖子,它可以帮助您 - https://stackoverflow.com/a/12650928/4741746