How to stop an activity in android using intent?

后端 未结 2 1406
孤城傲影
孤城傲影 2020-12-09 04:04

I think this is a basic question. Is there any option to stop an activity by using intent.

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse(\"tel:5554         


        
相关标签:
2条回答
  • 2020-12-09 04:49

    I had this problem a few days ago, and I'm happy to tell you I've found a way around this.

    First of all, to the activity you want to stop add this in the AndroidManifest.xml:

    android:launchMode="singleTop"
    

    I'm going to use a CheckBox example. When it's checked the activity is started and when unchecked will kill the activity.

    Example Activity A is calling Activity B and then killing it using an intent.

    Code to be put in A:

    checkbox.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(A.this, B.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                if (enable.isChecked()) {
                    intent.putExtra("keep", true);
                    startActivity(intent);
                }
                else
                {
                    intent.putExtra("keep", false);
                    startActivity(intent);
                }
            }
        });
    

    Code to be put into B:

    boolean keep;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.B);
        intent = this.getIntent();
        boolean keep = intent.getExtras().getBoolean("keep");
        if(keep==true)
        {
            //execute your code here
    
        }
     }
        @Override
    protected void onNewIntent(Intent intent)
    {
        super.onNewIntent(intent);
        keep = intent.getExtras().getBoolean("keep");
        if(keep==false)
        {
            B.this.finish();
        }
    }
    

    Explanation : What this basically does is, when the checkbox is checked it calls the activity and passes a boolean value, if it's true the activity is kept alive and is brought to the foreground. Now, if you don't pass the flag singleTop then many instances of this activity will be created. singleTop makes sure only the same instance is called. Now, when the checkbox is unchecked a new value for keep is passed which is verified in B. If unchecked, the Activity A will be passing false, and hence B terminates itself from within the onNewIntent() function.

    P.S - You can close Activity B from another Activity too. Just use If the other activity is C:

    Intent intent = new Intent(C.this, B.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra("keep", false);
    startActivity(intent);
    
    0 讨论(0)
  • 2020-12-09 04:55

    You can turn off the background data of play store and play services for not entering the play store .it will simply say, " COULD NOT BE LOADED " Thats the only way i found to stop intent

    0 讨论(0)
提交回复
热议问题