gpt4 book ai didi

android - 从不同线程 Android 更新 View

转载 作者:行者123 更新时间:2023-11-29 18:02:20 24 4
gpt4 key购买 nike

我制作了一个简单的 Android 应用程序,它会在收到短信时更新其 View 。这是我的接收器类的代码

public class SMSReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
intent.setClass(context, SMSReceiverService.class);
intent.putExtra("result", getResultCode());
WakefulIntentService.sendWakefulWork(context.getApplicationContext(), intent);
}

该类将调用 SMSReceiverService 类来处理即将到来的 SMS 并执行方法 notifyMessageReceived,如下所示。

private void notifyMessageRecevied(SMS message) {
if(!isInMyApps()) {
launchPopUp();
}
else {
//updating view should go here
}
}

问题是,我不知道如何更新我的 Activity 中的 View (它在单独的类中,而不是 SMSReceiverService 类),当我尝试在我的 Activity 中更新我的 TextView 时,它抛出了 CalledFromWrongThreadException。任何人都可以帮助我吗?

提前致谢,抱歉我的英语不好...

最佳答案

您可以创建一个 Activity 变量来保存您想要的 Activity 实例。

SMSReceiver(您要调用的那个)中:

SMSReceiverService.setMainActivity(this);

SMSReceiverService(您要更新的服务)中:

public static SMSReceiver smsActivity;
public static void setMainActivity(SMSReceiver activity)
{
smsActivity = activity;
}

...

smsActivity.runOnUiThread(new Runnable() {
public void run() {
try{
smsActivity.textView.setText("");
}
catch{}
}
}

假设 SMSActivity 是包含您要更新的 View 的文件。

关于android - 从不同线程 Android 更新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15277608/

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