广

android开发

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    Android 完全退出应用程序的解决方法

    2018-04-06 10:40:11 次阅读 稿源:互联网
    广告

    有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到MainActivity

    设计:


    有两个应用界面MainActivity和BActivity,以及用于程序的通用类ExitUtil

    步骤:

    1、添加一个类,名为ExitUtil
    代码如下:

    public class ExitUtil {
     public static final int EXIT_APPLICATION = 0x0001;
     private Context mContext;
     public ExitUtil(Context context) {
      mContext = context;
     }
     // 完全退出应用程序
     public void exit() {
      Intent intent = new Intent(mContext, MainActivity.class);
      // 设置FLAG!!!表示从当前Activity跳转到intent构造方法中添加的类,并且把两个Activity之间的Activity给finish掉!
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      // 发出退出应用程序指示
      intent.putExtra("flag", EXIT_APPLICATION);
      mContext.startActivity(intent);
     }
    }

    2、添加BActivity,覆写其中的方法如下,并且需要在清单文件中对此Activity进行配置
    代码如下:

    public class BActivity extends Activity {
     private static final int MENU_EXITAPPLICATION = Menu.FIRST;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      TextView tv = new TextView(this);
      tv.setText("wecolme!");
      setContentView(tv);
     }
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
      menu.add(0, MENU_EXITAPPLICATION, 0, "退出程序");
      return super.onCreateOptionsMenu(menu);
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
      // 其它Activity调用程序就通过此方法
      if (item.getItemId() == MENU_EXITAPPLICATION) {
       ExitUtil eu = new ExitUtil(this);
       eu.exit();
      }
      return super.onOptionsItemSelected(item);
     }
    }

    3、修改MainActivity方法
    代码如下:

    public class MainActivity extends Activity {
     Button btn = null;
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      btn = (Button) findViewById(R.id.btn);
      btn.setOnClickListener(new OnClickListener() {// 点击进入BActivity
       @Override
       public void onClick(View v) {
        Intent intent = new Intent(getApplicationContext(), BActivity.class);
        startActivity(intent);
       }
      });
     }
     // 接受退出程序的指令
     @Override
     protected void onStart() {
      int flag = getIntent().getIntExtra("flag", 0);// 第一次,进入应用时获取得到的flag为默认的值0!
      if (flag == ExitUtil.EXIT_APPLICATION) {
       finish();
      }
      Log.i("TAG", "Start");
      super.onStart();
     }
     // 当Activity是单例模式的时候,两次启动该Activity就不会调用onCreate->onStart这些方法了
     @Override
     protected void onNewIntent(Intent intent) {
      int flag = getIntent().getIntExtra("flag", 0);
      if (flag == ExitUtil.EXIT_APPLICATION) {
       finish();
      }
      Log.i("TAG", "NewIntent");
      super.onNewIntent(intent);
     }
    }

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告