使用BroadCastreceiver刷新应用程序中的活动时遇到问题。我正在使用正在进行一些计算的服务,并且在onDestroy()
方法中我正在这样做:
@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个,之后我可以在我的LogCat日志中查看其他具有该功能的活动,但是我我目前没有参加这些活动。它们只是活动堆栈中的某个地方。但是我无法理解的是它重新加载它们(即使我看不到它在视觉上)以及如何防止这种问题。我只需要刷新我所处的活动。
谢谢!
答案 0 :(得分: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);
}