2012-01-18 6 views
1

BroadCastreceiver를 사용하여 내 애플리케이션에서 활동을 새로 고치는 데 문제가 있습니다.Android BroadCastReceiver가 모든 활동 새로 고침

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

내 활동에

내가이 일을 해요 : I는 몇 가지 계산을 수행하고 onDestroy() 방법에 내가이 일을 해요 서비스를 사용하고 있습니다 내 모든 활동과 문제는 서비스를 중지하기 전에 2-3 명이 변경되면 그 기능이있는 다른 활동에서 내 LogCat 로그를 볼 수 있지만 현재 이러한 활동을 수행하지 못하고 있다는 것입니다. 그들은 단지 활동 스택 어딘가에 있습니다. 그러나 내가 이해할 수없는 것은 그것들을 재 장전하는 것입니다 (시각적으로 볼 수 없더라도). 그리고 이런 종류의 문제를 방지하는 방법입니다. 내가 속한 활동 만 새로 고침해야합니다.

고마워요!

답변

2

활동에 추가하기 만하면됩니다. broadcastreceiver의 등록을 취소하고 다음과 같이 onResume()에 다시 등록해야합니다.