2013-01-20 29 views
1

所有這一切都與我自己的應用程序。如何使用broadcastReceiver onReceive()將我的活動帶到前臺?

我有兩種情況。首先,我的活動是最重要的,一切正常。我的服務廣播信息,我的活動更新其GUI。

我的問題是,我不知道如何將我的活動帶到前面,如果它不在那裏。理想的情況是,所有在它前面的活動都將被關閉,並將這一項活動帶到前臺。我該怎麼做呢?

broadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //what code do I put here to bring this activity to the front and close all other activities on top of it? 
     } 
    }; 

這是我如何解決這個問題,在後波紋管的幫助下。

  Intent i = new Intent(); 
      i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      i.setClass(MyClass.this, MyClass.class); 
      startActivity(i); 
+0

當你說「在它前面的一切活動」你的意思是你自己的應用程序的其他活動? – Squonk

+0

是的,我願意。抱歉。 –

回答

1

首先,沒有直接的命令將活動帶到前面,例如myActivity.bringToFront。相反,你將不得不讓android通過intents機制爲你做。

因此,如果您想要將活動放在前面,您必須調用startActivity並將正確的標誌傳遞給intent。例如,國旗FLAG_ACTIVITY_CLEAR_TOP將完成您的工作。但是有一個問題,如果您使用廣播接收器或服務中的startActivity,則無法設置此標誌。所以在你的情況下,我認爲你應該使用國旗FLAG_ACTIVITY_NEW_TASK

下面是一個例子:

Intent i = null; 
i = new Intent(context, My_activity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(i); 

希望這有助於...

+0

非常感謝!當你發佈這個時,我已經在正確的道路上。但它幫助我。 –

相關問題