开发者

Android Yes I want to close the app I opened!

开发者 https://www.devze.com 2023-02-21 03:31 出处:网络
I have an app which I want to open, use, and then at the push of a button close.My question is do I need to keep singleton data of the application status in order to make this happen?I mean if I go wi

I have an app which I want to open, use, and then at the push of a button close. My question is do I need to keep singleton data of the application status in order to make this happen? I mean if I go with the solution of doing finish on resume() that means that I should need to keep a global data that each activity looks at to close out? This is a fine, albeit awkward way to close an app, but I'll go with it unless I hear another way soon.

Thanks.

PS please do not respond with android will decide when and what to do with your app. I'm sorry but I know m开发者_JS百科y user does want to see this app again after they click Finish! And in the end that's what matters and they are not at all interested in what android needs to do with the app nor should they be.


Maybe you can use System.exit(0) if you want to kill your app.

As came up from comments, you need to do it from the main activity. My way (though there might be a cleaner way) is to add a static handler in the main activity:

static Handler handler = new Handler() {
   @Override
   public void handleMessage(Message msg)
   {
       System.exit(2);
   }
}

and a static method:

static public Handler getExitHandler()
{
    return handler;
}

and in each class I obtain this handler and send it a message when I want to exit:

MyMainActivity.getExitHandler().sendEmptyMessage(0);

again, not so clean, but the same about System.exit(2);


Well, there is a reason why everyone says that, and is the same as "you don't close a web page". I don't know what your users might expect, but this is the way Android/iOS works.

I've used, for something like what you want to do, the flag ACTIVITY_CLEAR_TOP (you set the flag on the intent to open the activity which contains the close button), so in this way the activity stack is deleted, only the current activity remaning: so when you do finish(); the app "closes".

Intent intent = new Intent(this, Some.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);


You could pop up a dialogue that informs the user: "the app will close in x seconds" and start a timer that calls finish() on the activity when it ends.

0

精彩评论

暂无评论...
验证码 换一张
取 消