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