2009-09-15 119 views
4

假設有三個活動,顯示順序是a-> b-> c。 現在,我想直接繼續活動一,在Activity c完成一些操作後。 直接通過Activity c恢復Activity a,但創建Activity a的新實例。如何恢復活動?

+0

爲什麼你想要一個新的Activity a實例經過a-> b-> c-> a – 2009-09-16 07:57:12

+4

什麼,你想恢復還是重新啓動?你可以通過發送帶有標誌ACTIVITY_CLEAR_TOP的Intent來恢復它,或者你完成舊的並重新啓動它(然後你得到一個新的實例)。 – Matthias 2009-09-16 12:05:49

回答

2

as @Matthias表示,你想恢復還是重新啓動Activity a?如果你想重新啓動它,那麼你會包括FLAG_ACTIVITY_CLEAR_TASK在你的意圖這是這樣的:"If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started"

,或者你很可能只是調用finish();活動的

,如果你想恢復它,那麼你只需要調用startActivity(new Intent(Parent.this, ActivityA.class));或任何你的代碼是

其他信息:ActivitiesIntentActivity and Task Design

2
  • 在b中您可以使用的onResume()方法,內容爲finish() as:

BroadcastReceiver receiverFinish = null;

@Override 

protected void onResume() { 

    super.onResume(); 
    if(receiverFinish!=null){ 
     unregisterReceiver(receiverFinish); 
    } 
    receiverFinish=new BroadcastReceiver() { 
@Override   
public void onReceive(Context context, Intent intent) { 


       if(intent.getAction().equals("finish.activity")){ 
         MyActivity.this.finish(); 
        } 
           }  }; 
       registerReceiver(receiverFinish, new IntentFilter("finish.activity")); 

    } 
  • 然後在C調用:

//完成B活性

意向意圖=新意圖( 「finish.activity」); sendBroadcast(intent);

//完成c活動

finish();

  • 希望對你有用!好咕嚕!
  • Pham Trung Phuong - Vsoft Corp
+0

因此,可以在onPause()被調用後讓一個接收方註冊嗎? – 2013-10-08 20:20:59