保留 BroadcastReceiver 所做的更改

Posted

技术标签:

【中文标题】保留 BroadcastReceiver 所做的更改【英文标题】:Keep changes made by BroadcastReceiver 【发布时间】:2019-07-15 22:53:40 【问题描述】:

我被困在这一点上:

 private BroadcastReceiver mReceiver = new BroadcastReceiver() 
    @Override
    public void onReceive(Context context, Intent intent) 

            Bundle bundle = intent.getExtras();

            String number = bundle.getString("Time");
            GameTime.setText("" +number + " hours");

    
;

在另一个 Activity 中,当按下 Button 时,MainActivity 得到一个 int。 每当我打开 Activity 时,我都看不到带有 number 变量的 GameTime TextView。

我知道 OnReceive 方法有效,因为我在其中放了一个 toast,并且在从另一个 Activity 发送 int 后我可以看到 toast。 如何在更改活动时保留对 TextView 所做的更改?

谢谢。

【问题讨论】:

【参考方案1】:

一种方式:

在您的活动中定义一个接口并在您的活动中实现该接口并将其引用传递给另一个类并在需要时调用该引用。

例子:

a) 创建接口

public interface MyBroadcastListener
 public void doSomething(String result);

b) 初始化广播接收器

public class TestNotifAlarm extends BroadcastReceiver 
private MyBroadcastListener listener;
@Override
public void onReceive(Context context, Intent intent) 
    listener = (MyBroadcastListener)context;
    listener.doSomething("Some Result");


c) 在Activity中实现接口

public YourActivity extends AppCompatActivity implements MyBroadcastListener
// Your Activity code 
public void updateTheTextView(String t) 
    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(t);

@Override
public void doSomething(String result)
     updateTheTextView(result);          // Calling method from Interface


另一种方式:

a) 在 Activity 类中放置一个接收器

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() 
    @Override
    public void onReceive(Context context, Intent intent) 
            textView.setText(intent.getStringExtra("extra"));
    
;

b) 注册广播接收器

registerReceiver(broadcastReceiver , new IntentFilter("trigger_broadcust"));

c) 调用 sendBroadcast

Intent intent = new Intent("trigger_broadcust");
intent.putStringExtra("extra", "data");
sendBroadcast(intent);  

【讨论】:

以上是关于保留 BroadcastReceiver 所做的更改的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 插件:将数据从 Android BroadcastReceiver 发送到 Flutter 代码

数据表 - 回调后保留选定的页码

解析 git 命令的更有效方法?

如何让自己走的更远

在winsock中重用向量作为数组的更有效方法?

在编辑视图中保留实体密钥的更安全方法?