如何从Broadcast Receiver android刷新/重新加载活动

时间:2014-09-29 14:58:04

标签: android android-activity broadcastreceiver start-activity

大家好我怎么做才能从扩展BroadcastReceiver的类中刷新一个Activity?具有意图的经典StartActivity不起作用。 :/

3 个答案:

答案 0 :(得分:0)

  

大家好我怎么做才能从扩展的类中刷新一个Activity   广播接收器?

您可以通过在Activity中添加BroadcastReceiver并在扩展BroadcastReceiver的类中向其发送广播来实现此目的。

在您的活动中注册BroadcastReceiver:

IntentFilter filter = new IntentFilter("yourpackagename.updateActivity");
registerReceiver(new BroadcastReceiver(){
    public void onReceive(Context context, Intent intent) {
        // Update your Activity here.
    }
}, filter);

向扩展BroadcastReceiver的类中的该活动发送广播:

    public void onReceive(Context context, Intent intent) {
        if(meet the condition){
            Intent i = new Intent("yourpackagename.updateActivity");
            context.sendBroadcast(i);
        }
    }

PS。此解决方案可以保证每个Activity在有多个Activity实例时获得更新通知,而静态字段解决方案无法保证。

答案 1 :(得分:-1)

活动:

       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();
          }
          }
        }

答案 2 :(得分:-3)

在BroadcastReceiver中添加此行

YourActivity.Update();

通过这个方法在您的活动类中创建一个静态Update()方法,并在Update()方法中执行您想要的所有操作。