2012-12-11 238 views
0

我試圖在啓動呼叫時重新啓動應用程序。我正在監聽電話狀態變化,當我處於脫機狀態時,我嘗試重新啓動我的應用程序。將重新啓動應用程序重新啓動前面

這是我使用的發射活動代碼:

Intent i = new Intent(context, MyClass.class); 
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

,我使用「singleTop」啓動模式下的活動將不會被重建。問題是活動重新啓動,但不在前面。也許有人有這個解決方案? 謝謝。

+0

[FLAG_ACTIVITY_REORDER_TO_FRONT](http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT) –

回答

0

嘗試以下:

  Intent intent = new Intent(context, MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 

      finish(); 
      startActivity(intent); 
+0

Tkanks快速回復,但我嘗試過。它不工作。 – user1252459

+0

你是否用你的代碼嘗試完成()。 – ZealDeveloper

+0

它彈出到前面的活動,但也重新創建 – user1252459

1

你試過設置活動,以singleInstance在您的清單?

<activity 
     android:name=".Main" 
     android:label="@string/app_name" 
     android:launchMode="singleInstance"> 

這將打開相同的活動(因爲只能有一個它的實例)。 這適用於我,但確實有一些缺點。防爆。您不能將活動用於不同的任務。

+0

感謝您的答覆,但我得到desa​​me效果,因爲使用android:launchMode =「singleTop」 – user1252459

0

無法保證您的應用程序仍在運行,並且無需創建即可啓動;出於這個原因,你不需要依賴任何標誌來繼續你離開的地方。相反,它會下降到當您的應用程序被隱藏時存儲您的狀態,並在您的應用程序恢復時恢復它。根據Android活動生命週期,有多種方法可以實現此目的(如http://developer.android.com/reference/android/app/Activity.html所示)。我會通過將我的狀態保存在onPause()方法中並將其恢復到onResume()方法來執行此操作。