了解isFinishing()是Finishing的函数。Finishing是Android Activity生命周期中的一个阶段,用于表示一个Activity正在被销毁并释放其资源。在Finishing阶段,一个Activity可以完成以下操作:
在Finishing阶段,可以调用isFinishing()函数来检查一个Activity是否处于Finishing状态。
在Activity中调用finish()或按返回键退出时,若有资源被其他对象引用不能释放(如context被某个单例对象引用或正在线程中被使用),则activity不会被调用onDestory()方法。
说到Activity的onDestroy,对所有的Android开发者都很熟悉,但是不一定都知道里面存在着一些坑,分享给大家,以后踩中的时候可以应急 用Activity的时候,会发现如下问题:
Android 系统用栈的形式管理 Activity , 当新的 Activity 被创建是, 会被放置到栈顶, 这个 Activity 会进入到运行状态, 而前一个 Activity 则会被压入栈, 直到新的 Activity 退出, 否则不会出现在前台。
Coroutine是kotlin官方文档上推荐的,个人理解,其实就是一个轻量级的线程库 使用前加依赖
作者介绍了一种比较隐蔽的 BadTokenException 场景,并给出了初步解决方案,值得一看。
笔者在Nexus6 7.0上面测试偶尔出现,html内容无法加载出来,显示一片空白,开启硬件加速后完美解决。
最近项目太紧,都没时间总结写下自己的开发路上的技术心得了。是时候调整下自己的工作和学习节奏了。 接着上次总结的Application类的实际项目使用Android开发中怎样使用Application类,最近我又发现了一个取巧的使用方法,给想要快速开发的同学分享下心得,也是给大家多提供一个思路吧。
作为一名Android世界的搬运工,每天搬砖已经够苦够累了,走在坑坑洼洼的道路一不小心就掉坑里了。
现在的App基本上都会使用Native+H5的方式来开发的,例如网易新闻详情页面,微信公号详情页面都会使用WebView开发。这样可以很容易实现图文排版的需求,而且混合开发的好处也是显而易见的。
创建一个BaseActivity 类继承Activity 在onCreate 中输出类名
使用WebView开发的坑很多,这是众所周知的。本文分别对WebView的三个基本控件(俗称三剑客WebViewClient,WebChromeClient,WebView)做了一些封装,方便使用,避免掉坑里。
在我们App运行时,可能在某个界面需要退出App,如果你没有把之前的Activity都finish掉的话(每次跳转都把前一个Activity finish掉,虽然可以实现,但本人不建议这种写法,因为有的Activity需要反复调用,不能每一次都取create),那么当你点击返回键的时候,并不能实现直接退出,这种时候,就需要我们对Activity做一个统一的管理。
最近一直在搞自定义的AlertDialog,先贴一下图。 输入图片说明 输入图片说明 输入图片说明 这几种都是自定义的AlertDialog,还支持从Service弹出。好了,话不多说,看使用方法:
使用一个 RecyclerView 实现了一个类似 Tab 效果,当这个 Tab 可以滑动时,显示最右侧的三角按钮,否则隐藏这个按钮。效果如图
这个其实很简单,就是新建一个 BaseActivity ,然后让这个类继承 AppCompatActivity,并重写 onCreate() 方法:
Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),这两种方法比较暴力,App进程会被直接杀掉,但是由于Android的安全机制,你会发现,在调用上述两种方法后,App会被自动重启,并未达到我们想要的杀死状态!
Activity是Android组件中最基本也是最为常见用的四大组件之一,也是我们在开发过程之中接触最多的组件,所以了解Activity的生命周期,并正确的理解与应用,是必不可少的。下面就来介绍一下Activity生命周期。
看到很多的教程包括官方的api的简单描述,双击返回键退出应用程序还用到比较传统的计时方式,用起来很累,于是我就类了-简单的类了。 主要业务逻辑就是利用Handler.sendEmptyMessageDelayed()延迟发送消息 Source - Code: packagecom.samego.alic.demo01uicontrols; importandroid.app.Activity; importandroid.app.ActivityManager; importandroid.content
最近因为项目需求,需要完成一个全局的网络加载弹窗需求,真正完成这个需求之后,感觉最重要的不是结果,而是思维。
注意:Coroutine和retrofit的使用在retrofit2.6之前之后是有区别的
当我们在查看别人的代码的时候可能不能第一眼就发现首次的活动是哪一个,我们可以通过以下的方法来找出当前的主活动是哪一个:
最近在友盟收集的错误列表中,发现有个问题使得蛮多用户闪退的。根据错误信息定位到,是由于图片轮播控件com.youth.banner使用Glide异步加载图片时发生的崩溃。在开发及测试过程中,并没有发生这个问题,话不多说,直接分析错误信息。
新建一个ActivityCollecter类做为活动管理器 public class ActivityCollector { public static List<Activity> activities = new ArrayList<>(); public static void addActivity(Activity activity){ activities.add(activity); } public static void removeAct
知晓当前在哪一个活动 工作当中可能接手一份别人的代码,当需要在某个界面修改东西的时候,却找不到这个界面对应的是哪个活动。 新建一个BaseActivity类,右击包名,New,Java Class,输入BaseActivity。 只写一个普通Java类就可以了,并让BaseActivity继承AppCompatActivity,并重写onCreate()方法。
CountDownTimer类比较简单,总共就一个构造和4个方法。内部是通过handler实现
Picasso 英文意思国外一个很有名的画家毕加索的名字,国外项目取名还是很有意思的! 从github新下载的picasso项目有依赖其他第三方开源项目okhttp和okio,这两个项目也是相当经典的,据说okhttp里网络请求的代码处理逻辑已经加入到android4点几的源码中了。 picasso也提供了封装好了的jar包可以使用,这样就不需要导入okhttp和okio项目了,但是看jar包里的OkHttpDownloader这个类还是引用了okhttp里的对象,可是在jar包里并没找到,不知道为什么~谁
生命周期感知组件可以响应另一个组件生命周期的变化(例如Activity和Fragment的生命周期状态更改)。 这些(实现了Lifecycle的)组件可帮助你构建组织性更好、更轻、更易于维护的代码。
Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设计模式,它是用于展示层(Presentation)的结构。
DialogFragment推出来已经很久了,网上相关的文档一大堆,但是稍微不注意,还是会踩坑,本篇基于自身经历总结
本文讲述了Android自定义横向滑动菜单的实现。分享给大家供大家参考,具体如下:
然后编写一个登录的活动,这里写了一个简单的登录,密码正确的话就进入主页面,否则给出提示。
之前发现很多人在群里面、论坛上求网易新闻客户端的源码,之后我就去下了个网易新闻客户端和今日头条新闻客户端,发现他们的大体是一样的,于是在最近的空闲时间,便去琢磨如何去实现这样一个APP。 要知道它们是如何实现的,用到了什么第三方库文件,反编译便是很好的一个了解方法,如果你想要了解如何反编译可以点击这个链接:反编译就这么简单 只是一般的APK打包后都是被混淆过的,所以没那么好了解他的每个界面是如何实现的,没事,那就自己慢慢摸索或则从它的资源文件中提取布局了解下整体的大概情况。 我通过反编译 --今日头条:
CountDownTimer如果使用不当,常常会报空指针异常,甚至造成严重的内存泄漏 5.0源码:
一、概述 在 Android内存泄漏终极解决篇(上)中我们介绍了如何检查一个App是否存在内存泄漏的问题,本篇将总结典型的内存泄漏的代码,并给出对应的解决方案。内存泄漏的主要问题可以分为以下几种类型: 静态变量引起的内存泄漏 非静态内部类引起的内存泄漏 资源未关闭引起的内存泄漏 二、静态变量引起的内存泄漏 在java中静态变量的生命周期是在类加载时开始,类卸载时结束。换句话说,在android中其生命周期是在进程启动时开始,进程死亡时结束。所以在程序的运行期间,如果进程没有被杀死,静态变量就会一直存在,不会
欢迎界面想做出广告页自动轮播的效果,图片切换的方式用淡入淡出的方式。这个在h5页面很容易就实现了,但是在android界面中,很容易就想到了动画animation动画来实现,但是发现使用动画的话,这种方式看起来不会自然,因为在调用statAnimation的时候因为图片已经显示了,这样再硬生生的播放一次动画其实会导致细微的闪烁效果。后来发现android中自带了TransitionDrawable类可以很轻松地实现这个效果,但是会有局限性。
com.pushio.manager.iam.ui.PushIOMessageViewActivity已将导出设置为 true 使该活动容易受到攻击。
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8425736.html
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8425736.html 学过计算机网络的人多多少少对Socket都会有所了解,在Android中,我们也可以借助Socket来实现进程间通讯,即使对Socket不熟悉也没关系,本篇文章将会用一个非常简单的例子,来说明通过Socket实现进程间通讯的步骤,为了打消大家对Socket的陌生感,我们先来看看Socket的基本概念和用法。 一、Socket是什么 Socket又称“套接字”,是网络
这两天在做一个项目碰到这么个问题,需要主界面点击两次直接退出整个APP而不是返回上一个界面,查找了网上的资料,整合和修改了一下写了这篇博客。
崩溃log只有系统层面的堆栈,这个问题在我之前文章已经有分析过了,原因是因为glide主动回收了bitmap导致的(当然也有可能是其他代码异常,不过我之前项目线上的这种崩溃,最终排查,都是glide导致的)
通过LocalBroadcastManager的getInstance()方法来获取一个实例,注册广播是用的registerReceiver()方法,传入的参数一个是localReceiver的内部实例,一个是IntentFilter实例。最后在onCreate方法中调用发送广播的方法。最后我们在按钮的点击事件里面发送一条com.example.broadcasttest.LOCAL_BROADCAST广播,然后在LocalReceiver里面去接收这条广播。
Activity 会创建视图来向用户显示信息,并使用户与 Activity 互动。视图是 Android UI 框架中的类。它们占据了屏幕上的方形区域,负责绘制并处理事件。Activity 通过读取 XML 布局文件确定要创建哪些视图(并放在何处)。这些 XML 文件存储在标记为 layouts 的 res 文件夹内。
选择图片:compile ‘com.lzy.widget:imagepicker:0.5.4’
选择图片:compile 'com.lzy.widget:imagepicker:0.5.4'
这个版本终于快结束了,历时一个月的时间,这段时间里重复着开发、找 BUG 和解 BUG 的工作,人已经快麻木了,不过最后看到 自己的开发成果还是蛮欣慰的,这可能就是程序员最简单的乐趣吧。这里看一下整体的效果图,一些细节不方便展示,大概有个预览吧:整体交互
前面我们介绍了: 进程间通信基础介绍 通过AIDL介绍Binder的工作机制 通过 Bundle、文件共享、Messenger实现进程间通信 进程间通信的方式之AIDL 进程间通信的方式之ContentProvider
去年的时候学习了Rxjava和Retrofit的基本用法,但一直没有在实际项目中运用。今年开做新项目,果断在新项目中引入了RxJava和Retrofit。本篇文章将介绍笔者在项目中对Retrofit的封装。 先来看一下封装过后的Retrofit如何使用。
standard,SingleTask,SingleTop,SingleInstance
刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成。其实Java中没有指针的概念,但是指针的使用方式依然存在,一味的依赖系统
领取专属 10元无门槛券
手把手带您无忧上云