1

シナリオは次のとおりです。

  1. ユーザーは Activity#1 を使用して (Android サービスを使用して) アラームをスケジュールし、AlarmManagerホーム画面に戻ります。Activity#1 はスタックに残ります。

  2. AlarmRecieveronReceived()は計画どおりに呼び出されます:

    @Override
    public void onReceive(Context context, Intent intent){
    
       Intent intent = new Intent(context ,Activity2.class);
    
    intent.setFlags(
            Intent.FLAG_ACTIVITY_NEW_TASK |
            Intent.FLAG_ACTIVITY_NO_HISTORY
                    );
    
    context.startActivity(intent);
    }
    
  3. Activity#2 ( Activity2) が正常に開始されました。

    public class Activity2 extends Activity {
      @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.activity_layout_2);
    
        getWindow().addFlags(
                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
                        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                        WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
                        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                        WindowManager.LayoutParams.FLAG_FULLSCREEN
        );
    
    }
    
    @Override
    protected void onResume() {
        super.onResume();
    
        findViewById(R.id.dismiss_button).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        finish();
    
                    }
                }
        );
    
    }
    

    }

  4. ユーザーはボタン ( R.id.dismiss_button) をクリックしてfinish()アクティビティ #2 に進みます。

  5. システムは期待どおりにホームスクリーンに戻りますが、Activity#2 はスタックに残ります(ユーザーがRecent Buttonをクリックすると表示されます) 。

Intent.FLAG_ACTIVITY_NO_HISTORYインテントのフラグを設定することに加えて、フラグも指定されていることに注意してくださいAndroidManifest.xml(そして、それぞれを別々に試しました):

   <activity
        android:name=".Activity2"
        android:label="@string/app_name"
        android:configChanges="orientation|keyboardHidden"
        android:launchMode= "singleInstance"
        android:noHistory="true"
        >
    </activity>

Intent.FLAG_ACTIVITY_NEW_TASKまた、 Activity#2 がAlarmReceiver別のアクティビティではなく、別のアクティビティから開始されるため、フラグが必要です。

4

1 に答える 1