亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

按下HOME按鈕后,無需5秒的延遲即可從服務啟動活動

按下HOME按鈕后,無需5秒的延遲即可從服務啟動活動

慕田峪9158850 2019-12-26 14:19:57
我遇到此Android問題中描述的問題:http : //code.google.com/p/android/issues/detail?id=4536簡而言之,在按下HOME按鈕后,Android會阻止服務和廣播接收者調用startActivity 5秒鐘。我還注意到(理論上),具有以下許可:"android.permission.STOP_APP_SWITCHES"允許您調用resumeAppSwitches(在ActivityManagerService中定義)。查看最新版本的ActivityManagerService,將刪除此代碼。問題:如何在不延遲5秒鐘的情況下使用startActivity啟動活動?
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

我認為目前的API沒有辦法做到這一點。我認為這就是他們希望其工作的方式,以便當用戶按主鍵退出時,應用程序無法強制自己重新打開。您可以將home /啟動器意圖添加到過濾器中,以進行嘗試啟動的任何活動。然后,用戶將可以選擇基本將其視為主屏幕。然后,只要用戶按下主屏幕按鈕,它就會立即啟動(他們必須從彈出的列表中選擇它,詢問他們要使用哪個應用來完成此操作,但他們可以檢查是否始終使用這個應用程式,可讓您日后邁出這一步。)


查看完整回答
反對 回復 2019-12-26
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

這是我找到的解決方案。


將要立即開始的意圖放在PendingIntent中,然后在其上調用send()方法。


所以代替這個


Intent intent = new Intent(context, A.class);

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                context.startActivity(intent);

只是這樣做


Intent intent = new Intent(context, A.class);

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                PendingIntent pendingIntent =

                        PendingIntent.getActivity(context, 0, intent, 0);

                try {

                    pendingIntent.send();

                } catch (PendingIntent.CanceledException e) {

                    e.printStackTrace();

                }


查看完整回答
反對 回復 2019-12-26
?
九州編程

TA貢獻1785條經驗 獲得超4個贊

我正在使用AlarmManager從Service立即啟動Activity。即使您之前已按下主頁按鈕,活動也將立即開始。


在Android 5.0.1(Galaxy Alpha)上進行了測試。


請勿在6.0.1(Nexus 7 2013)上使用:-(


不要在4.1.2(Galaxy S II)下工作:-(


不要在4.3(ASUS MeMO Pad FHD 10 ME302C)上工作:-(


@TargetApi(Build.VERSION_CODES.KITKAT)

private void startActivity() {


    Intent intent = new Intent(this, Main.class);

    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    long now = Calendar.getInstance().getTimeInMillis();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)

        alarmManager.setExact(AlarmManager.RTC_WAKEUP, now, pendingIntent);

    else

        alarmManager.set(AlarmManager.RTC_WAKEUP, now, pendingIntent);

}


查看完整回答
反對 回復 2019-12-26
  • 3 回答
  • 0 關注
  • 962 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號