【发布时间】:2014-09-29 14:58:03
【问题描述】:
大家好,我该如何从扩展 BroadcastReceiver 的类中刷新 Activity?带有意图的经典 StartActivity 不起作用。 :/
【问题讨论】:
标签: android android-activity broadcastreceiver start-activity
大家好,我该如何从扩展 BroadcastReceiver 的类中刷新 Activity?带有意图的经典 StartActivity 不起作用。 :/
【问题讨论】:
标签: android android-activity broadcastreceiver start-activity
大家好,我该如何从扩展的类中刷新 Activity 广播接收器?
您可以通过在 Activity 中添加 BroadcastReceiver 并在扩展 BroadcastReceiver 的类中向其发送广播来实现此目的。
在你的 Activity 中注册一个 BroadcastReceiver:
IntentFilter filter = new IntentFilter("yourpackagename.updateActivity");
registerReceiver(new BroadcastReceiver(){
public void onReceive(Context context, Intent intent) {
// Update your Activity here.
}
}, filter);
向类中扩展 BroadcastReceiver 的 Activity 发送广播:
public void onReceive(Context context, Intent intent) {
if(meet the condition){
Intent i = new Intent("yourpackagename.updateActivity");
context.sendBroadcast(i);
}
}
PS。该方案可以保证当有多个Activity实例时,每个Activity都会收到更新通知,而静态字段方案不能保证。
【讨论】:
活动中:
class TestActivity extends Activity{
private static TestActivity Obj;
public TestActivity(){
Obj=this;
}
public static getInstance(){
return Obj;
}
public void refresh(){
//refresh Logic here
}
}
在接收器中:
public TestReceiver extends BroadcastReceiver{
........ OnReceive(){
if(TestActivity.getInstance()!=null){
TestActivity.getInstance().refresh();
}
}
}
【讨论】:
在您的 BroadcastReceiver 中添加这一行
YourActivity.Update();
由此在您的活动类中创建一个静态 Update() 方法,并在 Update() 方法中执行您想要的所有操作。
【讨论】: