Close application from broadcast receiver

前端 未结 3 692
梦如初夏
梦如初夏 2021-01-14 00:05

I\'m new in android programming. I\'ve tried registering broadcast receiver in activity, but my receiver not working when apps onPause. So i found that i need to registering

相关标签:
3条回答
  • 2021-01-14 00:55

    Use code below to send new intent to MainActivity from BroadcastReceiver:

    Intent i = new Intent(context, MainActivity.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    i.addFlags (Intent.FLAG_ACTIVITY_SINGLE_TOP);
    i.putExtra("close_activity",true);
    context.startActivity(i);
    

    in MainActivity use OnNewIntent as below:

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if(intent.getBooleanExtra("close_activity",false)){
            this.finish();
    
        }
    }
    

    FYI, I haven't tried the above code, But I have similar code working.

    0 讨论(0)
  • 2021-01-14 01:01

    Your broadcast receiver is in the main activity class? If so you can save a global context of your app and close it later in the broadcast receiver.

    If it is on a service or provider, just send an instance of your app to it when you start/register it. Then you call finish() from that instance.

    EDIT:

    Try this:

    In your main activity create this public method:

       public static void closeActivity(){
            finish();
       }
    

    Then in your broadcast receiver call this method like:

       MainActivity.closeActivity();
    

    Hope it helps ;)

    0 讨论(0)
  • 2021-01-14 01:10
    MainActivity m = new MainActivity();
    m.finish();
    

    When you say finish, it wont clear from stack because you didn't loaded the activity into stack first. The MainActivity is not activity here, it is just a class object in your code

    Have broadcast receiver in mainactivity, when onreceive finish the activity. don't create instance with new.

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