2013-10-29 80 views
2

我需要從後臺服務重新啓動我的主要活動。
我通過BroadcastReceiver得到我的服務結果,我需要恢復它(在一些操作之後)。從服務中恢復Android活動

可能嗎?
我該怎麼做?

我試過這個解決方案Resume application and stack from notification但它不適用於我。

編輯:
這就是我的接收器:

private BroadcastReceiver receiver = new BroadcastReceiver() { 


     @Override 
     public void onReceive(Context context, Intent intent) { 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null) { 
      int resultCode = bundle.getInt(DownloadService.RESULT); 
      if (resultCode == RESULT_OK) { 
       Log.i("MyApp", "RESULT OK"); 
       final Intent mainIntent = new Intent(context, MainActivity.class); 
       mainIntent.setAction(Intent.ACTION_MAIN); 
       mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
       startActivity(mainIntent); 
      } else { 
       Toast.makeText(MainActivity.this, "KO",Toast.LENGTH_LONG).show(); 
      } 
      } 
     } 

}; 
+0

你是什麼意思,它不適合你?你有例外嗎?你是否需要應用程序進入前臺並完全中斷用戶的行爲? –

+0

沒有錯誤。該應用程序沒有恢復,我敢肯定服務正在運行,因爲我有一些日誌。 – enfix

+0

發佈一些代碼,以便我們可以看到你在做什麼。大量的應用程序從包括我自己在內的通知中啓動。這絕對有效,並可能在Android上。 –

回答

4
Intent intent = new Intent(context.getApplicationContext(), MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
context.getApplicationContext().startActivity(intent); 
1

您必須使用此標誌與您的意圖:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

如果你不想讓你的活動的一個新實例,請在AndroidManifest文件中爲您的Activity設置launchMode:

android:launchMode="singleTask"