第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通知恢復(fù)任務(wù)而不是特定活動?

通知恢復(fù)任務(wù)而不是特定活動?

手掌心 2019-11-14 15:30:49
我有一個前臺服務(wù),只要用戶登錄到應(yīng)用程序,它就可以保持與服務(wù)器的連接打開。這樣,即使用戶通過按Home鍵將應(yīng)用程序發(fā)送到后臺,連接也可以保持活動狀態(tài)并可以直接從服務(wù)器接收消息。該應(yīng)用程序具有許多活動,當(dāng)將其發(fā)送到后臺時,其中任何一個都可能是活動的。我想允許用戶單擊通知以還原當(dāng)前的活動。我知道如何還原特定的活動,但想知道是否有一種方法可以還原用戶所在的上一個活動?當(dāng)然,我可以跟蹤最后一個,然后從Notification回調(diào)中調(diào)用它,但是認(rèn)為在任務(wù)級別可能有辦法嗎?感謝您提供的任何建議。android android-activity
查看完整描述

3 回答

?
瀟瀟雨雨

TA貢獻1833條經(jīng)驗 獲得超4個贊

您需要的只是一個簡單的活動,什么也不做。這是一個例子:


public class NotificationActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        // Now finish, which will drop the user in to the activity that was at the top

        //  of the task stack

        finish();

    }

}

設(shè)置您的通知以開始此活動。確保清單中此活動的任務(wù)親和力與應(yīng)用程序中其他活動的任務(wù)親和力相同(默認(rèn)情況下,如果您未顯式設(shè)置android:taskAffinity,則為)。


當(dāng)用戶選擇此通知時,如果您的應(yīng)用程序正在運行,則NotificationActivity將在應(yīng)用程序任務(wù)中最頂層活動的頂部啟動,并且該任務(wù)將被置于前臺。當(dāng)NotificationActivity完成時,它將簡單地使用戶返回到應(yīng)用程序中最頂層的活動(即,當(dāng)用戶進入后臺時將其停留在的任何位置)。


如果您的應(yīng)用程序尚未運行,則此方法將無效。但是,您可以通過以下兩種方法解決此問題:


當(dāng)您的應(yīng)用程序未運行時,請確保該通知未出現(xiàn)在通知欄中。


在NotificationActivity的onCreate()方法中,檢查您的應(yīng)用程序是否正在運行,以及是否未運行,請調(diào)用startActivity()并啟動您的應(yīng)用程序。如果這樣做,請確保在啟動應(yīng)用程序時設(shè)置標(biāo)志Intent.FLAG_ACTIVITY_NEW_TASK,以便該任務(wù)的根活動不是NotificationActivity。


查看完整回答
反對 回復(fù) 2019-11-14
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

效果很好,謝謝大衛(wèi)!以下類檢查應(yīng)用程序是否已在運行,如果尚未運行,則在完成之前啟動它(如David在選項2中所建議的)。


public class NotificationActivity extends Activity 

{

    @Override

    protected void onCreate(Bundle savedInstanceState) 

    {

        super.onCreate(savedInstanceState);


        // If this activity is the root activity of the task, the app is not running

        if (isTaskRoot())

        {

            // Start the app before finishing

            Intent startAppIntent = new Intent(getApplicationContext(), MainActivity.class);

            startAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            startActivity(startAppIntent);

        }


        finish();

    }

}


查看完整回答
反對 回復(fù) 2019-11-14
?
紅糖糍粑

TA貢獻1815條經(jīng)驗 獲得超6個贊

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

毫無疑問,這可行,但是問題是當(dāng)您將意圖設(shè)置為ACTION_MAIN時。這樣,您將無法將任何捆綁軟件設(shè)置為該意圖。我的意思是,由于ACTION_MAIN不能包含任何額外的數(shù)據(jù),因此不會從目標(biāo)活動中接收您的原始數(shù)據(jù)。


取而代之的是,您可以將活動設(shè)置為singleTask并正常調(diào)用意圖,而無需設(shè)置ACTION_MAIN并從目標(biāo)活動的onNewIntent()方法接收意圖。


但是請注意,如果您調(diào)用super.onNewIntent(intent); 然后將創(chuàng)建該活動的第二個實例。只是不要調(diào)用超級方法。


查看完整回答
反對 回復(fù) 2019-11-14
  • 3 回答
  • 0 關(guān)注
  • 458 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號