How to force stop my android application programmatically?

我与影子孤独终老i 提交于 2019-11-26 07:38:40

问题


I\'d like to force stop my Android application when I click closeButton. This is my code.

protected void onCreate(Bundle savedInstanceState) {

  this.setContentView(R.layout.layoutxml);

  this.closeButton = (Button)this.findViewById(R.id.close);

  this.closeButton.setOnClickListener(new OnClickListener() {

    @Override

    public void onClick(View v) {

      finish();

    }

  });

}

This finishes my application. If I go to Settings -> Applications -> Manage applications -> <my application name>, I can see the \'Force Stop\' button is enabled. Does this mean my application was not stopped completely?

How can I finish my Android application completely and disable the \'Force Stop\' button inthe \'Settings\'? From my limited experience, when an \'Exception\' (ex. NullPointerException) occurs in the application, it stops abnormally, looks like it finished completely, and the \'Force Stop\' button looks disabled.


回答1:


Another way is

android.os.Process.killProcess(android.os.Process.myPid());

I don't think it's all that bad to do this, provided you put those calls in onDestroy(). (If you kill your process in the middle of event handling, all kinds of bad things—like the touch focus going into the ether—can happen.)

Nevertheless, you need a compelling reason to deviate from best practice, which is to just call finish() and let the OS take care of killing off your process when/if it needs to.




回答2:


Note: This does not kill the entire app, but if what you want to do is to finish all the app activities, this is the best option.

Android ≥ 16

finishAffinity();

Android < 16

ActivityCompat.finishAffinity(Activity activity)

Hope this helps




回答3:


A bad way to kill the application would be System.exit(0)

Edit: I believe I owe some explanation. Android handles the application lifecycle on its own, and you are not supposed to 'ForceClose' it, and I don't know any good way to do it. Generally its ok if your application is still alive in the background, this way if user launches it again it will pop up quickly.




回答4:


Why not to make a Shell-Call to ActivityManager?

try {
      Runtime.getRuntime().exec("am force-stop com.me.myapp");
    } catch (IOException e) {
      e.printStackTrace();
    }



回答5:


I know it is a late reply , hope this helps some one.

You can try finishAndRemoveTasks(); instead of finish(); in your snippet.

This would kill your application's all activities and all process and even remove for recent apps from task manager.

Note: If you have use any kind of handler or thread in your code make sure you remove its functionalities and then use the above suggested code , if not NullPointer Exception or ResourceNotFound Exception would occur.



来源:https://stackoverflow.com/questions/5100728/how-to-force-stop-my-android-application-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!