Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android广播接收器刷新所有活动_Android_Broadcastreceiver - Fatal编程技术网

Android广播接收器刷新所有活动

Android广播接收器刷新所有活动,android,broadcastreceiver,Android,Broadcastreceiver,使用BroadCastreceiver刷新应用程序中的活动时出现问题。我正在使用一个正在进行一些计算的服务,在ondestory()方法中,我正在这样做: @Override public void onDestroy(){ super.onDestroy(); Intent intent = new Intent("finish"); this.sendBroadcast(intent); } receiver = new BroadcastRece

使用BroadCastreceiver刷新应用程序中的活动时出现问题。我正在使用一个正在进行一些计算的服务,在
ondestory()
方法中,我正在这样做:

@Override
public void onDestroy(){        
    super.onDestroy();

    Intent intent = new Intent("finish");
    this.sendBroadcast(intent);
}
receiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("finish")) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

                 TabGroupActivity parentActivity = (TabGroupActivity)getParent();
                 Intent previewMessage = new Intent(Tutorial.this, Tutorial.class);
                 parentActivity.startChildActivity("Tutorial", previewMessage);

                 progressBar.setVisibility(View.GONE);
                 sync.setImageResource(R.drawable.sync_icon2);

                 final SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                 SharedPreferences.Editor editor = isLogged.edit();
                 editor.putBoolean("getProgBar", false);
                 editor.commit();
            }               
        }
    };
    registerReceiver(receiver, new IntentFilter("finish"));
在我的活动中,我正在这样做:

@Override
public void onDestroy(){        
    super.onDestroy();

    Intent intent = new Intent("finish");
    this.sendBroadcast(intent);
}
receiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            if(intent.getAction().equals("finish")) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

                 TabGroupActivity parentActivity = (TabGroupActivity)getParent();
                 Intent previewMessage = new Intent(Tutorial.this, Tutorial.class);
                 parentActivity.startChildActivity("Tutorial", previewMessage);

                 progressBar.setVisibility(View.GONE);
                 sync.setImageResource(R.drawable.sync_icon2);

                 final SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                 SharedPreferences.Editor editor = isLogged.edit();
                 editor.putBoolean("getProgBar", false);
                 editor.commit();
            }               
        }
    };
    registerReceiver(receiver, new IntentFilter("finish"));
我在我的所有活动中都有这个功能,问题是如果我在服务停止之前更改了2-3个,之后我可以在日志中看到其他活动的日志,这些活动也有这个功能,但我目前不参与这些活动。它们只是活动堆栈中的某个地方。但我不明白的是它会重新加载它们(即使我看不见),以及如何防止此类问题。我只需要刷新我正在进行的活动


谢谢

只需将这些添加到您的活动中即可。您必须取消注册您的
broadcastreceiver
,然后在您的
onResume()
中再次注册,如下所示:

    @Override
public void onPause(){
    super.onPause();
    YourActivity.this.unregisterReceiver(receiver);
}
@Override
public void onResume(){
    super.onResume();
    IntentFilter intentFilter = new IntentFilter("com.example.MyService");
    YourActivity.this.registerReceiver(receiver, intentFilter);
}