【Handler问题求指导】使用Handler遇到了问题

package com.example.networktest;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;




public class MainActivity extends Activity implements OnClickListener{
protected static final int SHOW_REPONSE = 0;
private Button sendButton;
private TextView responseText;
//private static Handler handler;

private final Handler handler = new Handler(){
public void hadleMessage(Message msg){
switch (msg.what) {
case SHOW_REPONSE:
String response = (String) msg.obj;
//在这里进行UI操作
responseText.setText(response);
Log.d("MainActivity", "2");
   }
}
};

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

private void initView() {
// 初始化界面
sendButton = (Button) findViewById(R.id.send_request);
responseText = (TextView) findViewById(R.id.request_text);
sendButton.setOnClickListener(this);
Log.d("MainActivity", "3");

}

@Override
public void onClick(View v) {
// 发送请求按钮点击相应事件
if(v.getId() == R.id.send_request){
sendRequestWithHttpURLConnection();
Log.d("MainActivity", "4");
}

}

private void sendRequestWithHttpURLConnection() {
// 开启线程发起请求
new Thread(new Runnable() {
@Override
public void run() {
Log.d("MainActivity", "5");
// TODO Auto-generated method stub
HttpURLConnection connection = null;
try {
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection) url.openConnection();
Log.d("MainActivity", "6");
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
InputStream in = connection.getInputStream();
Log.d("MainActivity", "7");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
Log.d("MainActivity", "8");
StringBuilder response = new StringBuilder();
Log.d("MainActivity", "9");
String line;
Log.d("MainActivity", "1");
while((line = reader.readLine()) != null){
response.append(line);
}
Message message = new Message();
Log.d("MainActivity", "10");
message.what = SHOW_REPONSE;
//服务器返回的结果存放在Message中
message.obj = response.toString();
Log.d("MainActivity", "11");
handler.sendMessage(message);
Log.d("MainActivity", "12");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
if(connection != null){
connection.disconnect();
}
}
}
}).start();

}
}


你提到的问题是关于 FreeRTOS 在 `void HardFault_Handler(void)` 函数中产生死机的情况。HardFault 是一种硬件或软件错误导致的异常,当系统无法从异常中恢复时,会导致死机。 在 FreeRTOS 中,`HardFault_Handler()` 函数是一个中断处理函数,用于处理硬件故障异常。该函数位于 `port.c` 文件中,其中包含了 FreeRTOS 的特定硬件相关实现。 如果 FreeRTOS 在 `HardFault_Handler()` 函数中出现死机,可能是由于以下原因之一导致的: 1. 硬件错误:检查硬件部分是否存在问题,例如外设配置错误、中断优先级设置不正确等。确保硬件配置与 FreeRTOS 的要相符,并且没有硬件故障。 2. 内存问题:检查内存管理是否正确,包括堆栈溢出、内存分配错误等。确保在任务创建时分配足够的堆栈空间,并避免堆栈溢出。 3. 中断处理:确保中断处理程序在执行期间不会引发其他异常或死锁。避免在中断处理程序中使用阻塞操作或长时间占用 CPU。 4. FreeRTOS 配置:检查 FreeRTOS 配置文件是否正确设置。特别是与硬件相关的配置参数,如时钟频率、中断优先级等。 为了进一步调试问题,你可以尝试以下方法: 1. 使用调试器:通过连接调试器并跟踪代码执行路径,可以查看在 `HardFault_Handler()` 函数中发生异常的具体位置。这有助于确定导致死机的具体原因。 2. 日志输出:在 `HardFault_Handler()` 函数中添加日志输出语句,以记录异常发生时的状态信息。这样可以更好地了解异常发生的上下文。 3. 查找相关文档和社区支持:查阅 FreeRTOS 的文档和社区支持资源,寻找与你遇到问题类似的情况和解决方案。其他用户可能已经遇到过类似的问题,并能提供帮助和指导。 希望这些信息能对你解决问题有所帮助。如果你有任何其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值