对于网上所提供的杀进程,杀包等方式不予评价,这里提供一下自己觉得挺好使的二种方法,和大家一起进行分享。 一:利用全局容器 android提供了一个类似于EE中的servletContext的东西-Application。 在application里面我们通常会进行创建一些全局变量或者对应用程序进行一些必要的初始化。 第一个方法的思路就在于,我们可以在application里面创建一个集合容器,用于记录每个打开的activity,一旦我们有退出整个应用程序的需求的时候,我们就可以迭代该集合容器,把该容器里面保存的activity依次关闭。 核心代码如下,详细代码见附件一
public class BaseApp extends android.app.Application {public static Stack<Activity> activitys = new Stack<Activity>();/** @see android.app.Application#onCreate()*/@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();}public static void pushActivity(Activity mActivity) {activitys.add(mActivity);}public static void popAll() {while (!activitys.isEmpty()) {Activity act=activitys.pop();act.finish();}}}



二:利用activity启动模式 这里我们回顾一下activity的启动模式。 1:standard 模式;也就是默认模式,每次激活Activity时都会创建一个Activity实例,并放入任务栈中。 2:singleTop 模式;如果在任务栈中的栈定存在该Activity实例,下次激活该Activity实例时就不会创建新的 Activity的实例,直接重用它(在重用的这个过程中会调用实例的OnNewIntent()这个方法),否则就创建新的Activity实例。 3): singleTask 模式;如果在栈中已经有该Activity的实例,以后就不会创建新的实例了,而会重用该实例(在重用的这个过程中会调用实例的OnNewIntent()这个方法)。重用时,如果该Activity实例不是在栈顶,它会让该实例回到栈顶,而它上面的实例将会被移出栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4):singleInstance 模式;在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例( 会调用实例的 onNewIntent() )。其效果相当于多个应用共享一个应用,不管谁激活该 Activity 都会进入同一个应用中。

在这里我们可以把某个activity设置为singleTask模式,当我们有应用退出需要的时候,我们就可以通过intent打开该activity,然后activity会把其他的activity移出activity栈,然后我们再在该activity的onnewIntent方法进行finnish,那么我们就可以相对完美的退出该应用程序。 核心代码如下,详细见附件二:
public class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);TextView tv = new TextView(this);tv.setText("我是第一个activity");tv.setLayoutParams(new LayoutParams(100, 200));tv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(MainActivity.this,MainActivity02.class);startActivity(intent);}});setContentView(tv);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}/** @see android.app.Activity#onNewIntent(android.content.Intent)*/@Overrideprotected void onNewIntent(Intent intent) {// TODO Auto-generated method stubsuper.onNewIntent(intent);finish();}}


更多相关文章

  1. The Business of Android(安卓)Apps Development Making and Mar
  2. Android(安卓)Studio代码自动提示无效(not available in Power Sa
  3. Android之设计模式
  4. Android(安卓)自定义Toast
  5. 五、android中解析xml
  6. Android(安卓)- 开发实例(16):ListView新的使用方式
  7. 一种 Android(安卓)应用内全局获取 Context 实例的装置
  8. Android学习感悟之Activity
  9. android开发中常用的设计模式汇总

随机推荐

  1. android创建Popwindow弹出菜单的两种方式
  2. Android自定义Dialog的Match_parent无效
  3. RatingBar自定义设置
  4. Android:处理触摸事件
  5. gallery显示图片轮换(手动和自动)
  6. Android下Dialog及Activity屏蔽Home键详
  7. 初学Android,图形图像之打砖块游戏(二十
  8. Android UI个性style
  9. Android之传感器(二)持续更新
  10. Android 获取屏幕截图 和保存到本地的sd