How to close an android application?

不想你离开。 提交于 2019-11-27 19:10:35

问题


There are many question regarding this topic but there is no clear answer. Although android's memory management is very solid, so many people believe that we shouldn't kill android application. My case is different. I want an option to close an application. I found following code for closing application but sometimes it doesn't work.It seems application just refreshing itself when i hit exit button on my application.

MainActivity.java

@Override
    public void onDestroy()
    {
        super.onDestroy();
        /*
         * Notify the system to finalize and collect all objects of the
         * application on exit so that the process running the application can
         * be killed by the system without causing issues. NOTE: If this is set
         * to true then the process will not be killed until all of its threads
         * have closed.
         */
        System.runFinalizersOnExit(true);

        /*
        * Force the system to close the application down completely instead of
        * retaining it in the background. The process that runs the application
        * will be killed. The application will be completely created as a new
        * application in a new process if the user starts the application
        * again.
        */
        System.exit(0);
    }

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
   case R.id.close:
                Intent intentFinish = new Intent(this, FinishActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intentFinish);
                finish();
                return true;
}
return super.onMenuItemSelected(featureId, item);
}

FinishActivity.java

package com.mypackage;

import android.app.Activity;
import android.os.Bundle;

public class FinishActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        finish();
    }
}

I also tried Process.killProcess(Process.myPid()); but it doesn't work.


回答1:


I found my solution. Use this to close an application

Intent homeIntent = new Intent(Intent.ACTION_MAIN);
homeIntent.addCategory( Intent.CATEGORY_HOME );
homeIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(homeIntent);



回答2:


public void endTask() {
    // Is the user running Lollipop or above?
    if (Build.VERSION.SDK_INT >= 21) { 
        // If yes, run the fancy new function to end the app and
        //  remove it from the task list.
        finishAndRemoveTask();
    } else {
        // If not, then just end the app without removing it from
        //  the task list.
        finish();
    }
}



回答3:


you have used System.exit(0); , I would like suggest you not to use it. It is not a good programming style to use it. There is a method called finish(); in Activity to finish any Activity's Execution. You should use it.

Process.killProcess(Process.myPID()); is also not preferable to use.




回答4:


If you want to exit from an activity use finish() method of the activity, as Lucifer has suggested. It will simply finish the current activity. But if you want to exit from application(destroy all the activities upto Home Screen) use following Block of Code:

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



回答5:


switch(item.getItemId()) {
case R.id.close:
            Intent intentFinish = new Intent(this,FinishActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intentFinish);
            finish();
            return true;
}

why are you calling an activity which finishes itself (FinishActivity), then call finish() on the current activity (MainActivity) - whatever, the finish in the main activity is pointless.




回答6:


@Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode == KeyEvent.KEYCODE_BACK)
        {
            finish();
            return true;
        }
        else{
            return super.onKeyUp(keyCode, event);
        }
    }

use the above method in the very first activity that is launched on app start up



来源:https://stackoverflow.com/questions/9974792/how-to-close-an-android-application

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