2014-02-13 107 views
1

在我的Android應用程序中,我有一個打開的同一活動實例的列表(此活動基本上包含WebView。)當用戶單擊列表中的項目時,我想恢復根據活動顯示正確的網站。但是,使用標誌爲Intent.FLAG_ACTIVITY_SINGLE_TOPIntent.FLAG_ACTIVITY_REORDER_TO_FRONT的意圖不會執行任何操作,因爲Activity是相同的(只是具有不同額外值的不同實例)。Android:恢復活動的特定實例

我想我必須使用多個(例如10個)具有不同名稱的相同活動。然後每個網站都在其自己的活動中啓動。但是,當我想要打開10多個網站時,我又遇到了麻煩。

任何其他的想法如何解決這個問題?

回答

1

要解決此問題,您可以依靠Android Tasks

你要做的:

啓動的WebView活動使用國旗:Intent.FLAG_ACTIVITY_NEW_TASKIntent.FLAG_ACTIVITY_MULTIPLE_TASK

這些活動裏面調用getTaskId()和提供的ID給您的主要活動。當你要恢復的活動,請執行以下操作:

ActivityManager am = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE); 
am.moveTaskToFront(taskId, 0); 

需要許可permission android.Manifest.permission.REORDER_TASKS

當你想返回從一個的WebView任務(其中包括一個單一的活動),你的主要任務,做到這一點:

Context context = getApplicationContext(); 
String packageName = context.getPackageName(); 
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(packageName); 
launchIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
context.startActivity(launchIntent);