2014-04-01 194 views
-2

我正在使用Android中的服務,它在設定的時間段後開始活動。 這是我的代碼:從服務開始活動

Intent intent = new Intent(this, PopupActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

問題是,如果我的應用程序在後臺運行(暫停),並啓動服務的PopupActivity,在後臺運行的應用程序也會啓動。 我不想這種行爲,有沒有辦法來禁用這個,以便只顯示我的PopupActivity?

+1

**「我正在使用Android中的服務,它會在一段時間後啓動一項活動。」** - 絕對不要這樣做。如果我安裝了這樣的應用程序,並在玩遊戲,回覆短信或電子郵件等時推送了一個「Activity」,我會立即卸載該應用程序。使用'通知'並給用戶選擇打開你的彈出或不彈出。 – Squonk

+0

@Squonk好吧,我試過這樣做,請參閱相關文章:http://stackoverflow.com/questions/22793443/click-on-notification-doesnt-start-activity – deimos1988

回答

0

不,在Android中所有建築構件(包括活動)現場應用環境中,沒有顯示你的活動方式如果沒有啓動你的應用程序環境,它違背了Android的本質,就像試圖在沒有啓動引擎的情況下啓動一輛車:P(不能想象一個更好的例子),它沒有任何意義......

關心!

0

使用一個變量來定義,如果你的應用程序是「暫停」,以避免在啓動活動

private boolean isPaused = false; 

如果您的應用程序暫停,然後isPaused得到= TRUE;

@Override 
     protected void onPause(){ 
      isPaused = true; 
      super.onPause(); 
     } 

如果應用程序執行onResume()方法,然後isPaused得到= FALSE;

@Override 
    protected void onResume(){ 
     isPaused = false; 
    super.onResume(); 
    } 

評估是否isPaused得到isn't爲假,則啓動日活動

if(!isPaused){ 
Intent intent = new Intent(this, PopupActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
}else{ 
Log.i("Activity", "Activity cannot started, app is onBackground"); 
}