精华内容
下载资源
问答
  • Android Studio安卓开发如何按钮退出程序(所有的Activity) 只需要一个专门的集合对所有的Activity进行管理 (kotlin版本,复制粘贴Android可以自动转化为Java语言) 1. 新建一个单例类ActivityCollector作为...

    Android Studio安卓开发如何按钮退出程序(所有的Activity)

    只需要一个专门的集合对所有的Activity进行管理
    (kotlin版本)

    1. 新建一个单例类ActivityCollector作为Activity的集合

    /* 单例类ActivityCollector作为Activity的集合,对所有的Activity进行管理 */
    
    object ActivityCollector {
        private val activities=ArrayList<Activity>()
    
        /* 用于向ArrayList中添加Activity */
        fun addActivity(actity:Activity){
            activities.add(actity)
        }
    
        
        /* 用于从ArrayList中移除Activity */
        fun removeActivity(actity: Activity){
            activities.remove(actity)
        }
        
        /* 用于将ArrayList中存储的Activity全部销毁 */
        fun finishAll(){
            for (activity in activities){
                if (!activity.isFinishing){
                    activity.finish()
                }
            }
            activities.clear()
        }
    }
    

    2. 新建Class取名BaseActivity,添加代码让其继承AppCompatActivity,并重写onCreat()方法,重写onDestroy()方法

    open class BaseActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            ActivityCollector.addActivity(this)
        }
    
        override fun onDestroy() {
            super.onDestroy()
            ActivityCollector.removeActivity(this)
        }
    }
    

    3. 让所有Activity继承BaseActivity,由于BaseActivity继承自AppCompatActivity,所以所有Activity现有功能都不受影响

    class MainActivity : BaseActivity()
    

    4. 设置按钮的点击事件,只需调用ActivityCollector的finishAll方法

    //退出程序
            set_close.setOnClickListener {
                ActivityCollector.finishAll()
            }
    
    展开全文
  • 我们在开发当中经常要实现一个退出整个程序的功能,实现这样功能的方法有很多,今天我们就来利用activity中的singletask启动模式来优雅的退出整个程序吧! 首先我们需要了解的是关于singletask的一些知识,这个启动...

    我们在开发当中经常要实现一个退出整个程序的功能,实现这样功能的方法有很多,今天我们就来利用activity中的singletask启动模式来优雅的退出整个程序吧!

    首先我们需要了解的是关于singletask的一些知识,这个启动模式是栈内复用,举个简单的例子,如果有四个页面1,2,3,4,我们依次跳转,当从4跳转到2的时候,那么3和4就会被销毁,当然,如果从4跳转到1的话,那1之前的所有activity都将被销毁,此时我们再将1给finish掉就可以了,我们就是利用这样一个原理来实现退出整个程序。

    另外大家也要知道,当1使用了singletask的启动模式的时候,我们再次启动该activity的时候,该activity不会再次被创建,但是会调用一个onNewIntent方法,我们的finish就要写在这个方法里面,下面我们看具体实现

    第一步 设置退出按钮 设置intent 跳转到首次启动的activity 并且将此activity的启动模式设置成singletask
    quit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intentto = new Intent(Main3Activity.this,MainActivity.class);
            startActivity(intentto);
        }
    });
    <activity android:name=".MainActivity"
        android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    第二步 在首次启动的activity中重写onNewIntent方法 然后在里面写上finish方法
    @Override
    protected void onNewIntent(Intent intent) {
        finish();
      
    }
    如此就可以实现优雅的退出整个程序了

    展开全文
  • 因为我正在构建的应用程序将处理相当敏感的数据,所以我希望每次用户登录时都将SQLite数据库与服务器同步,并在每次应用程序失去焦点时删除emty数据库(因为用户移动到主屏幕或另一个应用).看到the Activity lifecycle,...

    因为我正在构建的应用程序将处理相当敏感的数据,所以我希望每次用户登录时都将SQLite数据库与服务器同步,并在每次应用程序失去焦点时删除emty数据库(因为用户移动到主屏幕或另一个应用).

    看到the Activity lifecycle,我的想法是通过清空每个Activity的onDestroy中的数据库来做到这一点.为了测试所描述的生命周期,我只是覆盖所有生命周期方法(onCreate,onStart,onResume,onPause,onStop和onDestroy),在其中包含一些日志消息,并启动我的应用程序.

    日志消息包含在我的SettingsActivity中.当我进入我的应用程序并移动到设置时,它运行onCreate,onStart和onResume(如预期的那样).然后,当我单击一个设置并移动到下一个屏幕时,它将在onPause和onStop上运行(仍然如预期的那样).要返回到设置屏幕,我单击后退按钮,它再次运行onStart和onResume(仍然按预期),当我现在再次单击后退按钮返回到初始屏幕时,它(令我惊讶的是)运行onPause, onStop AND onDestroy.

    所以我的问题;

    >为什么在应用程序未完成时会破坏活动?

    >更重要的是:当应用程序关闭或失去焦点时,如何运行我的CleanUp方法?

    解决方法:

    即使我认为你已经读过因为你已经研究了活动生命周期,你可以在第一个图中看到onDestroy()在onStop()之后调用,这个调用完全由系统管理:你不应该期待任何行为.系统将决定何时调用此方法,有时,此方法永远不会被调用(参见此处:http://developer.android.com/reference/android/app/Activity.html).当系统需要内存时,您的活动将传入onStop(),仅此而已.

    因此,要回答第二个问题,请阅读文档中有关onDestroy()方法的说明:

    Note: do not count on this method being called as a place for saving

    data! For example, if an activity is editing data in a content

    provider, those edits should be committed in either onPause() or

    onSaveInstanceState(Bundle), not here. This method is usually

    implemented to free resources like threads that are associated with an

    activity, so that a destroyed activity does not leave such things

    around while the rest of its application is still running. There are

    situations where the system will simply kill the activity’s hosting

    process without calling this method (or any others) in it, so it

    should not be used to do things that are intended to remain around

    after the process goes away.

    所以很明显,这是一个制作清理过程的好地方.所以你应该使用onPause()或onStop()方法之一.

    onStop()在文档中描述如下:

    Called when you are no longer visible to the user. You will next receive either onRestart(), onDestroy(), or nothing, depending on later user activity.

    onPause()在文档中描述如下:

    Called as part of the activity lifecycle when an activity is going

    into the background, but has not (yet) been killed.

    […]

    When activity B is launched in front of activity A, this callback will be

    invoked on A. B will not be created until A’s onPause() returns, so be

    sure to not do anything lengthy here.

    […]

    In situations where the system needs more memory it may kill paused processes to reclaim resources.

    我们现在知道onPause()旨在允许您保存数据,并且在执行onPause()之后,系统可能会终止您的进程.所以,在onPause()中进行清理似乎是最安全的地方,因为你很确定每次都会调用它.

    此外,正如您可以阅读的那样,在这里进行清理会使您的应用程序变慢,但无论如何在每次获得/松散焦点时清理和重新创建数据库都是一个非常繁重的过程……

    要恢复:在onPause()方法中执行清理过程,在onResume()中执行init过程.请记住,使用此类过程您的应用程序可能会非常慢.

    希望这可以帮到你.

    标签:java,security,android,sqlite,ondestroy

    来源: https://codeday.me/bug/20190718/1492059.html

    展开全文
  • 最近做一个项目,需要实现一个点击一个按钮然后就退出整个程序的功能,然后上网搜了很多资料,很多博客都提到写一个退出类,这是一个比较流行而且非常不错的选择,于是我复制了网上的代码,但是放在项目里出现了问题...
    最近做一个项目,需要实现一个点击一个按钮然后就退出整个程序的功能,然后上网搜了很多资料,很多博客都提到写一个退出类,这是一个比较流行而且非常不错的选择,于是我复制了网上的代码,但是放在项目里出现了问题,就是其中的
     public void exit()
        {
    
            for(Activity act:activityList)
            {
                act.finish();
            }
    
            System.exit(0);
    
        }

    for语句里面的activity会报错,我们看复制来的代码,其中上面有这么一句代码
    private List activityList = new LinkedList();

    这句是报错的主要原因,其中的list要使用泛型
    private List<Activity> activityList = new LinkedList();

    这样写就解决了问题,然后在每个activity的oncreat里面写上这么一句代码
    ExitApplication.getInstance().addActivity(this);
    要注意一定要在
    setContentView
    之后写才会起作用,然后在你要执行退出程序的地方写上这么一句代码
    ExitApplication.getInstance().exit();

    这样就会完美的实现退出整个程序了

    展开全文
  • 一:问题描述闪退(Crash)是客户端程序在运行时遭遇无法处理的异常或错误时而退出应用程序的表现,请从crash发生的原因分类与解决方法、在出现crash后如何捕捉并分析异常这两个问题给出自己的解决方案。我们以Android...
  • 从注册流程 分析如何安全退出多个Activity 多种方式.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 如何正确的退出应用程序? 1 最初的方案,是建立一个activity 的栈,每当有一个新的activity onCreate() 的时候,就把他加入到这个栈中,在希望退出的时候,将栈中的activity 们全部finish()掉就可以了。 这样...
  • 虽然你将进程放在后台执行,但是并没有跟启动该进程的终端detach,因此,父进程shell终端关闭,子进程也...使用示例如下:import daemondef do_main_program():pass # 你的程序with daemon.DaemonContext():do_main...
  • 最近发现一个问题,就是有时候程序崩溃没有退出而是重启了mainactivity,这样反而会造成一些问题或者定位问题,问题就是就是在mainactivity下跳转到ActivityB的时候不调用mainactivity的finish,然后当ActivityB出现...
  • 今天我来教大家如何免费开通微信音乐相册服务,微信音乐相册是一款免费且非常实用的微信小工具,可以帮助我们记录保存生活中的点点滴滴,我们可以把日常生活中的事件用相册的方式记录下来,不需要占用我们手机的储存...
  • //实现按两次back键退出程序 Emp.page.addEvent("onPressBackKeySystem",function(){ account++; toast("再按一次后退键退出程序"); if(account>1){ System.exit(); } setTimeout(2000,fu
  • 在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。 第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是...
  • 安卓APP应用中,通常按下返回键后会关闭程序,有时候我们为了避免误按返回健导致程序退出,会对按下返回健进行检测,并要求连续按下两次才退出程序。 在Delphi中开发安卓时,如何检测并实现两次退出APP呢。你...
  • 现在几乎所有的app都有退出程序的功能(最常见的就是在项目主Activity中连续点击两次返回按钮退出app)至于具体如何实现退出功能,网上有罗列出以下4种方式: 容器式 SingleTask式 广播式 进程式 个人比较...
  • 很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里给大家三种比较简单的方法实现。 首先要说明在B中直接使用finish(),接下来手机显示的...
  • 安卓底下,Delphi FireMonkey 做的 Android APP,默认情况下,按下手机的 Back 键,会关闭当前 Form。如果这个 Form 是主 Form 则整个 APP 退出。 本来,Form 有一个 OnCloseQuery 事件,这个事件会在一个 Form 被...
  • 在做android项目开发时,大家都知道如果程序出错了,会弹出来一个强制退出的弹 出框,这个本身没什么问题,但是这个UI实在是太丑了,别说用户接受不了,就连 我们自己本身可能都接受不了。虽然我们在发布程序时总会...
  • 安卓需要用到rabbitmq,但是进到主页就崩溃,后来发现是ConnectionFactory factory = new...这句话有问题,注释掉它就好了,控制台不报错,程序直接退出 发现高本版的安卓能用,安卓7以上都可以,如何兼容低版本安卓
  • 用惯了windows和图形化界面的大家,或多或少对命令行有些抵触,有没有好...交互模式以 >>> 开头,用户可以直接输入代码,回车后程序执行代码,如:退出交互模式可输入exit()或quit()交互模式可以一行行执行代码,也...
  • Android 退出 app 功能

    2019-09-04 09:02:34
    安卓如何实现点击一个按钮退出整个程序? Android 中几种优雅的退出APP方式介绍 ANDROID 完美退出APP的实例代码
  • 在我的应用程序中,我连接到一个网站,在开始时收集一些AsyncTask的信息,使用try catch,从这里我可以在我的catlog中显示错误,如果有任何连接,但我一直试图运气好显示一个对话框显示连接失败以及重新连接或退出的选项,...
  • 内附视频下载方法。 黑马安卓基础 总共8天教程。...89_如何安全的退出应用程序.avi 90_获取手机sim卡的运营商.avi 91_如何通过代码安装一个apk文件.avi 92_如何反编译别人的代码&怎么去防止自己的程序被别人反编译.avi
  • 今天就来介绍一下如何程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序。实现由bug出现不弹出错误框,并完美退出app
  • 一:问题描述 闪退(Crash)是客户端程序在运行时遭遇无法处理的异常或错误时而退出应用程序的表现,请从crash发生的原因分类与解决方法、在出现crash后如何捕捉并分析异常这两个问题给出自己的解决方案。 我们以...
  • 安卓APP通过rosbridge与ros建立socket链接,发布主题后,ros能够正常订阅,app异常退出socket断开后rosbridge爆出警告,app重新链接后重新发布的主题,ros端程序订阅不到该主题,需要关掉程序后重新启动才能订阅到,...

空空如也

空空如也

1 2 3
收藏数 49
精华内容 19
关键字:

安卓程序如何退出