• 445 阅读
  • 1 回复

Android 完全退出程序

视频在线上传+队列转换FLV+水印+捉图+修复+获时+转3GP(API语言不限,开视频站必备!)
程序运行时我直接就从MainActivity跳转到BActivity,在BActivity有个“退出程序”菜单,点击会退出程序。具体过程如下:

       首先第一步:新建一个
Android工程,命名为ExitDemo(目录结构图如下)


2011-11-19 21:00:20 上传
下载附件(11.3 KB)



第二步:定义一个工具类Sysutil用来退出程序,这样定义好处可以在多个Activity的时候复用,代码如下:

Java代码:


  1. package dev.demo;



  2. import android.app.ActivityManager;

  3. import android.content.Context;

  4. import android.content.Intent;



  5. public class SysUtil {

  6. public static final int EXIT_APPLICATION = 0x0001;



  7. private Context mContext;



  8. public SysUtil(Context context){

  9. this.mContext = context;

  10. }



  11. //完全退出应用

  12. public void exit(){



  13. // 1.5 - 2.1之前下面两行是ok的,2.2之后就不行了,所以不通用

  14. // ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);

  15. // am.restartPackage("com.tutor.exit");



  16. Intent mIntent = new Intent();

  17. mIntent.setClass(mContext, MainActivity.class);

  18. //这里设置flag还是比较 重要的

  19. mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

  20. //发出退出程序指示

  21. mIntent.putExtra("flag", EXIT_APPLICATION);

  22. mContext.startActivity(mIntent);

  23. }

  24. }

复制代码
第三步:修改MainActivity.java,代码如下:

Java代码:


  1. package dev.demo;



  2. import android.app.Activity;

  3. import android.content.Intent;

  4. import android.os.Bundle;



  5. public class MainActivity extends Activity {

  6. @Override

  7. public void onCreate(Bundle savedInstanceState) {

  8. super.onCreate(savedInstanceState);

  9. setContentView(R.layout.main);

  10. }



  11. //这里用来接受退出程序的指令

  12. @Override

  13. protected void onStart() {

  14. int flag = getIntent().getIntExtra("flag", 0);

  15. if(flag == SysUtil.EXIT_APPLICATION){

  16. finish();

  17. }

  18. super.onResume();

  19. }

  20. //程序启动后就进入了BActivity

  21. @Override

  22. protected void onResume() {

  23. Intent mIntent = new Intent();

  24. mIntent.setClass(this, BActivity.class);

  25. startActivity(mIntent);

  26. super.onStart();

  27. }



  28. //当activity是单例的时候,再次启动该activity就不会再调用 oncreate->onstart这些方法了

  29. @Override

  30. protected void onNewIntent(Intent intent) {

  31. int flag = getIntent().getIntExtra("flag", 0);

  32. if(flag == SysUtil.EXIT_APPLICATION){

  33. finish();

  34. }

  35. super.onNewIntent(intent);

  36. }

  37. }

复制代码
第四步:新建一个Activity命名为BAcivity.java,记得要在配置文件里申明哦~代码如下:

Java代码:


  1. package dev.demo;



  2. import android.app.Activity;

  3. import android.os.Bundle;

  4. import android.view.Menu;

  5. import android.view.MenuItem;

  6. import android.widget.TextView;



  7. public class BActivity extends Activity {

  8. public static final int MENU_EXITAPPLICATION = Menu.FIRST;



  9. @Override

  10. protected void onCreate(Bundle savedInstanceState) {

  11. super.onCreate(savedInstanceState);



  12. TextView mTextView = new TextView(this);

  13. mTextView.setText("Welcome to Frankie's blog.");

  14. setContentView(mTextView);

  15. }



  16. @Override

  17. public boolean onCreateOptionsMenu(Menu menu) {

  18. menu.add(0, MENU_EXITAPPLICATION, 0,"退出程序");

  19. return super.onCreateOptionsMenu(menu);

  20. }





  21. @Override

  22. public boolean onOptionsItemSelected(MenuItem item) {

  23. if(item.getItemId() == MENU_EXITAPPLICATION){

  24. //其他Activity退出程序这样调用就ok了

  25. SysUtil mSysUtil= new SysUtil(BActivity.this);

  26. mSysUtil.exit();

  27. }

  28. return super.onOptionsItemSelected(item);

  29. }

  30. }

复制代码
第五步:运行程序,直接进入了BActivity,点击菜单效果如下:



2011-11-19 21:02:42 上传
下载附件(25.98 KB)



这里要说明一下,如果我们的主Activity是单例模式的话,也就是launcheMode="singleTop|singleTask"如下面代码:

Java代码:


  1. <activity android:name=".MainActivity"

  2. android:launchMode="singleTop"

  3. android:label="@string/app_name">

  4. <intent-filter>

  5. <action android:name="android.intent.action.MAIN" />

  6. <category android:name="android.intent.category.LAUNCHER" />

  7. </intent-filter>

  8. </activity>

复制代码

http://www.apkbus.com/forum.php?mod=viewthread&tid=17033
小鱼的淘宝店铺-多多支持哇
小鱼的淘宝店铺-多多支持哇