2014-03-28 54 views
1

在我的應用程序中,我必須進行兩項活動和一項後臺服務。作爲主要活動的第一項活動(活動A)用於啓動/停止服務。該服務用於在需要啓動活動時啓動活動(活動B)(即使活動A未運行,該服務也可以啓動活動B)。如何在沒有通過父母活動的情況下開展兒童活動?

  • 當服務啓動活動B時,我可以在幾毫秒內在屏幕上看到活動A已啓動並在即將顯示活動B之前消失。
  • finish()從活動B調用,這是顯示在屏幕上的活動A,我希望展示活動B.前推出的最後一個活動

我的問題是如何啓動活動B (作爲獨立的活動),而不通過活動A(這是主要活動)?

這是我用來從服務啓動活動B代碼:

Intent intent = new Intent(this, ActivityB.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

這是我的清單:

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" >   

    <!-- Activity A --> 
    <activity 
     android:name="ActivityA" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <!-- Activity B --> 
    <activity 
     android:name="ActivityB" 
     android:excludeFromRecents="true" 
     android:exported="true" 
     android:immersive="true" 
     android:launchMode="singleTask" /> 

    <!-- Service --> 
    <service 
     android:name="Service" 
     android:enabled="true" 
     android:exported="true" > 
    </service> 
</application> 

在此先感謝

回答

2
Just Place this code in your Activity A 


private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       Log.d("Service","Message"); 
       ActivityA.this.finish(); 
      } 
     }; 

     @Override 
     protected void onResume() { 
      // TODO Auto-generated method stub 
      super.onResume(); 
      LocalBroadcastManager.getInstance(this).registerReceiver(
        mMessageReceiver, new IntentFilter("finishA")); 
     } 

//這個地方代碼在您的活動B onCreate()方法

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      Intent intent = new Intent("finishA");      

      LocalBroadcastManager.getInstance(ActivityB.this).sendBroadcast(intent); 
     } 
+0

謝謝,這個工程。但是沒有其他解決方案不那麼棘手?通過使用清單例如? – reevolt

+0

我知道這些解決方案只是老兄!但您可以使用此解決方案從後臺完成任何活動 – sandy

相關問題