精华内容
下载资源
问答
  • Android实现完全退出应用程序代码
    千次阅读
    2021-06-03 14:55:57

    退出方法:

    1) 使用singleTask加载模式

    2) 定义一个基类,做公共的功能

    定义一个Application

    退出形式:

    1) 菜单->退出

    2) 按back键,提示再按一次退出

    3) 按back,弹出退出提示对话框

    4) 按back直接退出

    以下是第一种方法,通过在清单中配置activity的加载模式singleTask

    使用singletask 栈中单实例 例子:a启动b,b启动c,在c的menu菜单中点击退出项,关闭所有activity。

    @Override

    protected void onNewIntent(Intent intent)

    {//加载了singletask后,返回来的时候直接进入onNewIntent()方法,不会再进入onCreate();

    super.onNewIntent(intent);

    finish();

    Process.killProcess(Process.myPid());//所有activity关闭后,结束进程

    }

    第二种方法

    在application里面创建一个全局容器arraylist,写两个方法,在容器里加addActivity()和finishActivity();

    public class Myapplication extends Application

    {

    public static ArrayList activities = new ArrayList();

    public static void addActivity(Activity activity)

    {

    activities.add(activity);

    }

    public static void finishActivity()

    {

    for (int i = 0; i < activities.size(); i++)

    {

    activities.get(i).finish();

    }

    Process.killProcess(Process.myPid());//所有activity关闭后,结束进程

    }

    }

    创建一个基类BaseActivity,写方法getApplication(),(作用是减少代码重复)让每一个activity都继承它。

    public class BaseActivity extends Activity

    {

    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_base);

    Myapplication app = (Myapplication) getApplication();

    app.addActivity(this);

    }

    @Override

    public boolean onCreateOptionsMenu(Menu menu)

    {

    // Inflate the menu; this adds items to the action bar if it is present.

    getMenuInflater().inflate(R.menu.base, menu);

    return true;

    }

    }

    退出形式的代码如下:

    @Override

    public boolean onOptionsItemSelected(MenuItem item)

    {

    Myapplication app = (Myapplication) getApplication();

    app.finishActivity();//第一种形式:点击菜单退出项,关闭所有activity,结束进程

    return super.onOptionsItemSelected(item);

    }

    int pressbacktimes = 0;

    private Button button;

    @Override

    public void onBackPressed()

    {

    pressbacktimes ++;

    if(pressbacktimes == 1)

    {

    Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();

    button.postDelayed(new Runnable()

    {

    //第二种形式:两次点击返回键,第一次弹出toast,提示再按一次退出。间隔超过5秒,就失效

    @Override

    public void run()

    {

    pressbacktimes = 0;

    }

    }, 5000);

    }

    else if(pressbacktimes == 2)

    {

    Myapplication app = (Myapplication) getApplication();

    app.finishActivity();//点击菜单退出项,关闭所有activity,结束进程

    }

    }

    @Override

    public void onBackPressed()

    {//第三种形式:MainActivity里面点击返回键,弹出对话框,是否退出

    new AlertDialog.Builder(this).setTitle("title").setMessage("是否退出").setNegativeButton("取消", null).setPositiveButton("确定", new DialogInterface.OnClickListener()

    {

    @Override

    public void onClick(DialogInterface dialog, int which)

    {

    Myapplication app = (Myapplication) getApplication();

    app.finishActivity();

    }

    }).create().show();

    }

    更多相关内容
  • 代码如下:<html>  <head>  <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>Insert title here</title>  </head>  <body>  ...
  • Android程序源码--贪吃蛇.rar Mp3播放器源码Android实战项目源码.rar 安卓Android中国象棋Chess程序源码.rar 安卓Android俄罗斯方块游戏--完整游戏项目源码.rar 安卓Android开源小说阅读器CoolReader源码.rar
  • 7个经典Android应用程序实例源代码。。。。。。。。。。。。。。。。。。。。。
  • 1、新手入门学习 2、简单易懂
  • Android指南针程序代码代码介绍:指南针程序页面设计的很漂亮只在将它装进手机就不用担心会迷路了,而且源代码代码风格还好,易读性可想而知非常。而且从代码中可以很容易明
  • android画图程序代码介绍:这是一个自动画图的程序,会自动改变图形的颜色,效果如下图所示:
  • Android 个人记账程序代码介绍:一个简单的个人记帐程序,基本上是对Sqlite的应用,比较合适初学者。值得一提的是这个程序还有一个启动闪屏。
  • Android程序设计经典教程》配套随书代码,完整,内容丰富
  • Android经典源码全集常用android程序源码80个合集,可以做为你学习设计参考,每一个都是一个完整的小项目,里面都有源码,初学者学着用! 具体如下: GestureRecogniseSample GetPostSample ...
  • NULL 博文链接:https://davice-li.iteye.com/blog/760736
  • Android条码扫描程序代码介绍:Android条码扫描程序代码,提供给初学者学习研究用,由于我没有真机,所以还是你自己测试吧。
  • uniWeather a android weather app
  • 几个经典的Android课程设计小程序,方便理解和练习.
  • Android应用源码30套安卓源码合集: andriod闹钟源代码.rar Android Gps日志记录程序源码.rar Android MP3播放器,带卡拉OK字幕.rar Android 个人记账程序源码.rar Android 仿Mac的Dock.rar Android 口袋微博服务器...
  • 本书对Android技术进行深入剖析和全面讲解,内容涵盖Android基本理论、Activity、基础UI编程、高级UI编程、... 内容涉及Android 5.0、Android 6.0和Android 7.0版本新特性以及Android Studio环境常用配置和程序签名。
  • 这篇文章主要介绍了在android中完全退出应用的实现代码,多种实现方法,大家可以根据需求选择android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对...

    这篇文章主要介绍了在android中完全退出应用的实现代码,多种实现方法,大家可以根据需求选择

    android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效。如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity。当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序。但这样比较麻烦,而且逐个返回的体验并不友好。

    网上比较流行的方法是定义栈,写一个ExitApplication类,利用单例模式管理Activity,在每个在Activity的onCreate()方法中调用ExitApplication.getInstance().addActivity(this)方法,在退出时调用ExitApplication.getInstance().exit()方法,就可以完全退出应用程序了。

    ExitApplication类

    代码如下:

    import java.util.LinkedList;

    import java.util.List;

    import android.app.Activity;

    import android.app.Application;

    public class ExitApplication extends Application {

    private List list = new ArrayList();

    private static ExitApplication instance;

    private ExitApplication()

    {

    }

    //单例模式中获取唯一的ExitApplication实例

    public static ExitApplication getInstance()

    {

    if(null == instance)

    {

    instance = new ExitApplication();

    }

    return instance;

    }

    //添加Activity到容器中

    public void addActivity(Activity activity)

    {

    activityList.add(activity);

    }

    //遍历所有Activity并finish

    public void exit()

    {

    for(Activity activity:activityList)

    {

    activity.finish();

    }

    System.exit(0);

    }

    }

    下面的三个类IndexActivity, BActivity,CActivity是简单的例子,分别是IndexActivity–>BActivity–>CActivity的跳转顺序。在每个Activity类中onCreate()方法中调用ExitApplication.getInstance().addActivity(Activity activity)方法。在任何一个Activity界面退出应用程序时,只要调用ExitApplication.getInstance().exit()方法,就可以在任何一个Activity中完全退出应用程序。

    IndexActivity 类源代码:

    import android.app.Activity;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    public class IndexActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    Button next=(Button)findViewById(R.id.next_to_b);

    next.setOnClickListener(nextClick);

    Button exit=(Button)findViewById(R.id.exit_main);

    exit.setOnClickListener(exitClick);

    ExitApplication.getInstance().addActivity(this);

    }

    OnClickListener nextClick=new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    Intent intent=new Intent(IndexActivity.this,BActivity.class);

    startActivity(intent);

    }

    };

    OnClickListener exitClick=new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    ExitApplication.getInstance().exit();

    }

    };

    }

    BActivity 类源代码:

    import android.app.Activity;

    import android.content.Intent;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    public class BActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.b);

    Button next_to_c=(Button)findViewById(R.id.next_to_c);

    next_to_c.setOnClickListener(next_to_cClick);

    Button exit_b=(Button)findViewById(R.id.exit_b);

    exit_b.setOnClickListener(exitClick);

    ExitApplication.getInstance().addActivity(this);

    }

    OnClickListener next_to_cClick=new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    Intent intent=new Intent(BActivity.this,CActivity.class);

    startActivity(intent);

    }

    };

    OnClickListener exitClick=new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    ExitApplication.getInstance().exit();

    }

    };

    }

    CActivity 类源代码:

    import android.app.Activity;

    import android.os.Bundle;

    import android.view.View;

    import android.view.View.OnClickListener;

    import android.widget.Button;

    public class CActivity extends Activity{

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setContentView(R.layout.c);

    Button exit_c=(Button)findViewById(R.id.exit_c);

    exit_c.setOnClickListener(exitClick);

    ExitApplication.getInstance().addActivity(this);

    }

    OnClickListener exitClick=new OnClickListener() {

    @Override

    public void onClick(View v) {

    // TODO Auto-generated method stub

    ExitApplication.getInstance().exit();

    //如果只是调用以下其中的一个方法,并不会完全退出应用

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

    //System.exit(0);

    }

    };

    }

    展开全文
  • Android开机自启程序代码
  • Android程序设计源代码

    2012-11-08 11:53:46
    示例程序 该目录包含了本书中的全部样例代码。 综合程序 包含了3个综合示例程序。 SD卡文件 把这些文件复制到你的模拟器或者真实设备的SD卡中。 软件工具 给出MP3文件分割器和3gp视频转换器两个软件的下载提示...
  • 88个经典Android安卓应用程序代码合集,可供学习设计参考。
  • 主要介绍了android studio实现简单考试应用程序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application. ✨ All fastlane docs ...
  • 100+个安卓应用程序开发实例(工程代码

    千次下载 热门讨论 2012-04-06 15:25:15
    Android程序源码--贪吃蛇》 《Android应用开发详解教材源码(上册)--10个单元40多个实例源码》 《Android应用开发详解教材源码(下册)--8个单元30多个实例源码》 《Mp3播放器源码Android实战项目源码》 《安卓...
  • <<<<<<>>>>>> c171dfe974f6f0bede63cb5e8d3d31ff6e8c84f3
  • 1、对应的博客地址:https://blog.csdn.net/mm13420109325/article/details/103379077 2、该程序通过安卓手机的【USB口实现串口通信】,搭配CH340usb转串口模块使用。
  • DroidEye v0.9 This is a test README.md file for DroidEye v0.9 Come to explore Android System with us!
  • 主要介绍了Android获取应用程序大小和缓存的实例代码的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
  • Qt on Android 示例程序

    热门讨论 2015-03-31 22:00:20
    《Qt on Android核心编程》的示例代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 605,246
精华内容 242,098
关键字:

安卓程序代码