2012-01-26 40 views
0

我有一個廣播接收器將啓動一個活動onReceive。Android - 廣播接收器發射singletask活動

啓動後,此活動將執行一項長期任務並在最後調用finish()。

當前一個活動仍在執行長期任務時,我不想觸發另一個Activity的啓動。我怎樣才能啓動一個單獨的活動?我已經在清單中設置了它。

android:launchMode="singleTask"

在我的onReceive方法,

public void onReceive(Context context, Intent intent) { 
    Intent activity = new Intent(context, Preview.class); 
    activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(activity); 
} 

不要似乎工作。

Activity類實際上是一個MediaRecorder,它將記錄一個視頻剪輯(比如10秒)。因此,我不希望觸發另一個活動,但此記錄仍不完整。

回答

0

你只需要有一些方法讓你的活動與你的接收器進行通信,讓它知道它是否已經在運行。如果你有這個,那麼你可以在接收器中做一個if語句,以防止它啓動倍數。

一個選項是您的活動中的靜態布爾值,指示您當前是否正在運行。然後你可以檢查接收器的布爾值,如果它是真的,那麼不要調用startActivity()。

您的活動就需要這樣的事:

​​

現在在你的接收器,你可以做一個簡單的if語句,將檢查isRunning的價值:

public void onReceive(Context context, Intent intent) { 
    if(YourActivity.isRunning == false){ 
     Intent activity = new Intent(context, Preview.class); 
     activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(activity); 
    } 
} 
0

請加上這些標誌。

public void onReceive(Context context, Intent intent) { 
    Intent activity = new Intent(context, Preview.class); 
    activity.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT); 
    context.startActivity(activity); 
} 
+0

對不起。我試過這個。它不工作。使用上面提到的蒂姆布爾運作! – humansg