gpt4 book ai didi

java - 从广播接收器更新 Activity UI 组件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:11:46 26 4
gpt4 key购买 nike

我有非常基本的问题。它可能非常简单,但我不明白。我有一个 Activity,我正在使用一些 UI 组件。我还有一个广播接收器(从 list 注册)我需要更新 Activity 类的一些 UI 组件。喜欢 -

    Class MyActivity extends Activity
{

onCreate(){

//using some UI component lets say textview
textView.setText("Some Text");
}

updateLayout()
{
textView.setText("TextView Upadated...");
}
}


Class broadCastReceiver
{

onReceive()
{
//here I want to update My Activity component like
UpdateLayout();

}

}

对此- 一个解决方案是使 updateLayout() 方法成为公共(public)静态,并通过 Activity 引用在接收器类中使用该方法。但我认为,这不是正确的方法。有没有合适的方法来做到这一点?

最佳答案

您可以在运行时注册和注销它,而不是在 list 中注册接收器,如下所示:

同时确保您在 Intent Filter 中使用正确的 Action 注册您的接收器。

public class MyActivity extends Activity{

// used to listen for intents which are sent after a task was
// successfully processed
private BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
new UpdateUiTask().execute();
}
};

@Override
public void onResume() {
registerReceiver(mUpdateReceiver, new IntentFilter(
YOUR_INTENT_ACTION));
super.onResume();
}

@Override
public void onPause() {
unregisterReceiver(mUpdateReceiver);
super.onPause();
}


// used to update the UI
private class UpdateUiTask extends AsyncTask<Void, Void, String> {

@Override
protected void onPreExecute() {

}

@Override
protected String doInBackground(Void... voids) {
Context context = getApplicationContext();
String result = "test";
// Put the data obtained after background task.
return result;
}

@Override
protected void onPostExecute(String result) {
// TODO: UI update
}
}

}

希望对您有所帮助。

关于java - 从广播接收器更新 Activity UI 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24931776/

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