子线程如何异步更新Fragment的UI界面

在登录成功后,一个后台线程负责从网络获取信息,然后使用Handler尝试更新Fragment_Contacts的UI。当线程完成但界面未切换至Fragment_Contacts时,出现空指针异常。问题在于线程执行与界面状态不同步。期望实现即使界面不在Fragment_Contacts,也能正确更新UI。寻求一种方案,使得线程能正常执行,无论界面是否在目标Fragment上,都能看到信息更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请问:我在登录界面中登录成功后,异步执行了线程类,该类作用是:从网络上获取了相关信息,读取后
通过Handler通知Fragment_Contacts界面!


public class LoadFriendDb extends Thread {
:
:
:
android.os.Message msg = Fragment_Contacts.HandlerListen.obtainMessage();
msg.what = 0;
msg.sendToTarget();
}



public class Fragment_Contacts extends Fragment {
public View onCreateView(.....)
{
:
:
// 监听UI handler
HandlerListen = new Handler() {
public void handleMessage(android.os.Message msg) {
String[] args = (String[]) msg.obj;
switch (msg.what) {
case 0:// 刷新
res();
break;
default:
break;
}
}

};
}
:
:
:
}

但是问题来了,由于异步执行了线程,时间是不一定的!有时候线程执行完毕了!但是操作界面没有停留在
Fragment_Contacts时就会报错:“空指针”!

如果登陆后马上切换到Fragment_Contacts界面,则正常!
但是实际上这种操作是不靠谱的,因为该Fragment只是其中一个而已。 我怀疑是线程执行后,而Fragment由于没有切换过去,所以还没有加载完毕!

我想得到的效果就是线程能够正常执行,界面不需要停留在指定的Fragment上面!如果停留了,也能看异步看到信息更新了!

希望能给例子说明一下,或者说说思路,给点重要方法函数等,谢谢各位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值