finish

如何安全退出Activity

泄露秘密 提交于 2019-12-13 11:16:41
如何退出Activity?如何安全退出已调用多个Activity的Application 1、通常情况用户退出一个Activity只需按返回键,我们写代码想退出activity直接调用finish()方法就行。 2、记录打开的Activity: 每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。 //伪代码 List<Activity> lists ;// 在application 全局的变量里面 lists = new ArrayList<Activity>(); lists.add(this); for(Activity activity: lists) { activity.finish(); } lists.remove(this); 3、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。 //给某个activity 注册接受接受广播的意图 registerReceiver(receiver, filter) //如果过接受到的是 关闭activity的广播 就调用finish()方法 把当前的activity finish()掉 4、递归退出 在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。 5

【Python CheckiO 题解】Between Markers

不问归期 提交于 2019-12-10 23:41:36
CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,传送门:https://checkio.org/,本博客主要记录自己在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。 题目描述 【Between Markers】 :给定一个字符串和两个标记字符(第一个和最后一个标记),找到两个标记符之间包含的子字符串。初始标记和最终标记始终不同;如果这两个标记在字符串中都不存在,则返回原字符串;如果没有初始标记,则应将第一个字符视为字符串的开头;如果没有最终标记,则最后一个字符应视为字符串的结尾;如果最终标记位于初始标记之前,则返回一个空字符串。 【链接】 :https://py.checkio.org/zh-hans/mission/between-markers/ 【输入】 :三个参数,都是字符串,第二个和第三个参数是初始标记和结束标记 【输出】 :字符串 【范例】 : between_markers ( 'What is >apple<' , '>' , '<' ) == 'apple' between_markers ( 'No[/b] hi' , '[b]' , '[/b]' ) == 'No' 解题思路 利用 find() 方法查找原字符串中是否有标记字符,注意,由于

前端实现大文件上传分片上传断点续传

你。 提交于 2019-12-10 14:26:40
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- ( void

Android开发 如何最优的在Activity里释放资源

冷暖自知 提交于 2019-12-06 02:49:41
前言   当前你已经入门Android开发,开始关注深入的问题,你就会碰到一个Android开发阶段经常碰到的问题,那就是 内存泄漏 . 其实大多数Android的内存泄漏都是因为activity里的资源释放不正确导致,activity与单例或者接口互相持有无法释放.这篇博客就来讲解如何在Android里最优的释放资源. 错误释放资源的一些例子   在看正面例子之前,我们看看反面例子,了解为什么经常莫名其妙的内存泄露 在Activity的onDestroy()的生命周期里释放资源 在下面的 onDestroy ()方法里我们有一个叫 mHttpList 的资源要释放,我们都知道activity的生命周期的最后是 onDestroy 方法,那么为什么在 onDestroy() 里释放资源会有问题呢?    问题出在 onDestroy() 生命周期 并不是立即执行的 .Activity退出前台后先是进入栈里的.是否执行 onDestroy() 是交给系统决定的,一般情况下系统的确会及时的运行 onDestroy() 方法销毁activity,但是在一些Activity跳转频繁的情况下可能系统并不会马上运行 onDestroy() 方法.这个时候问题就出现了你认为应该结束的资源并没有马上结束可能导致一些回调报错或者内存泄露.   @Override protected void

python logging模块

陌路散爱 提交于 2019-12-04 21:47:55
python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息; print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出; 2 logging模块使用 2.1 基本使用 配置logging基本的设置,然后在控制台输出日志, import logging logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) logger.info("Start print log") logger.debug("Do something") logger.warning("Something maybe fail.") logger

大视频断点续传解决方案

坚强是说给别人听的谎言 提交于 2019-12-04 00:41:09
总结一下大文件分片上传和断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件已上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。 下面来说细节: 1、首先获取文件(音视频、图片) 分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图1的压缩页面,最后我们的app获取的视频就是这个经过压缩后的视频(不是视频库里的原始视频,这里有个注意点,操作完该压缩视频后记得释放,系统不会帮你释放的,需要你手动来操作,下面会说到),然后通过UIImagePickerView的协议方法中的- ( void

How to switch between activities

匿名 (未验证) 提交于 2019-12-03 09:06:55
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: In my app I have three activity as Activity 1 Activity 2 Activity 3 How to switch between activities. So how can this be done? public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.settingOpt: Intent intent = new Intent(this, SettingsForm.class); this.startActivity(intent); this.finish(); break; case R.id.reminderOpt: Intent intentR = new Intent(this, ReminderForm.class); this.startActivity(intentR); break; case R.id.helpOpt: Intent intentH = new Intent(this, HelpForm.class); this.startActivity(intentH);

Android中返回Activity的两种方法

允我心安 提交于 2019-12-03 08:26:12
finish返回 finish(): 在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。 当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的返回按键的时候,也不会再找到这个Activity。 onDestory(): 系统销毁了这个Activity的实例在内存中占据的空间。 在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间等就被回收了。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。‍ intent返回 intent用于界面跳转,并不存在数据的传输,本界面到onStop()结束,下一个界面从onCreate()开始。 本次遇到的问题: 由于本界面有频繁请求,每次finish后再返回此界面就会出现延迟现象,显示数据就出现不实时现象。将finish修改为intent方式就避免了此种问题的产生。 但是我还不太明白使用intent跳转返回的弊端,会不会该界面的线程一直在跑,影响到手机运行内存呢? 来源: https://www.cnblogs.com/ksp-/p/11784935.html

android多activity退出整个程序的一个实现

折月煮酒 提交于 2019-12-03 05:05:21
多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。 网上资料: { finish()和system(0)都只能退出单个activity。杀进程等的等方式都不行~~~ 解决问题: 我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志Intent.FLAG_ACTIVITY_CLEAR_TOP,再次开启A时将会清除该进程空间的所有Activity。 在D中使用下面的代码: Intent intent = new Intent(); intent.setClass(D.this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG设置 startActivity(intent); finish();关掉自己 在A中加入代码: Override protected void onNewIntent(Intent intent) { // TODO Auto-generated method stub super.onNewIntent(intent); //退出 if ((Intent.FLAG_ACTIVITY_CLEAR_TOP & intent.getFlags())

How to quit an application programmatically through button click

匿名 (未验证) 提交于 2019-12-03 03:04:01
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I want to quit application through button click. the code for button click is quitBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View paramView) { // TODO Auto-generated method stub MainActivity.this.finish(); } }); But it require two clicks to exit from the app. 回答1: use this code...i hope this will help you.. quitBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View paramView) { finish(); moveTaskToBack(true); } }); 回答2: use this it is work for me: quitBtn