activity

监听Fragment中的回退事件

孤街浪徒 提交于 2020-03-01 01:27:39
一、如何监听Fragment中的回退事件 1、问题阐述 在Activity中监听回退事件是件非常容易的事,因为直接重写onBackPressed()函数就好了,但当大家想要监听Fragment中的回退事件时,想当然的也想着重写onBackPressed()方法,这时候你会发现:Fragment中根本就没有onBackPressed()方法给你重写。这可怎么破! 想想,在前面的例子中,我们在Activity的一个fragment_container里依次Add进fragment1,fragment2,fragment3,fragment4,在我们点击回退栈时,会将Transaction回退栈中的fragment操作一个个出栈!那,这些回退事件Fragment是从哪来的? 首先,回退事件总是发给Activity的!在发给Activity以后再由Activity自己处理。比如它将Fragment回退栈中的内容一个个出栈这种操作。 其次:大家要知道:Fragment只是Activity中的一个控件而已,虽然我们可能把他做成了像Activity一样大小覆盖整个页面,看起来跟Activity样子上没什么区别,但他还是个控件!系统怎么会给一个控件分发回退事件呢?这当然是不可能的。 2、解决方案 既然清楚了Fragment只是一个控件,而回退事件也只能在Activity中拦截。那我们就可以想办法了

Android GUI之Activity、Window、View

走远了吗. 提交于 2020-02-29 21:32:25
  相信大家在接触Android之初就已经知道了Activity中的setContentView方法的作用了,很明显此方法是用于为Activity填充相应的布局的。那么,Activity是如何将填充的布局绘制出来的呢?实际上Activity将View的绘制与显示交给了Window对象来处理,下面我们通过源码来进行跟踪分析。   Activity的源码如下,只给出我们关注的部分: public class Activity extends ContextThemeWrapper implements LayoutInflater.Factory2, Window.Callback, KeyEvent.Callback, OnCreateContextMenuListener, ComponentCallbacks2, Window.OnWindowDismissedCallback { …… …… private Window mWindow; private WindowManager mWindowManager; …… /** * Retrieve the current {@link android.view.Window} for the activity. * This can be used to directly access parts of the Window

Activity、Window和View三者间的关系有一定的见解

99封情书 提交于 2020-02-29 21:26:50
一、简述如何将Activity展现在手机上 Tips: Activity本身是没办法处理显示什么控件(view)的,是通过PhoneWindow进行显示的 换句话说:activity就是在造PhoneWindow,显示的那些view都交给了PhoneWindow处理显示 1、在Activity创建时调用attach方法: 2、attach方法中会调用PolicyManager.makeNewWindow() 实际工作的是IPolicy接口的makeNewWindow方法 ①、其中创建了一个window(可以比喻为一个房子上造了一个窗户):mWindow = PolicyManager.makeNewWindow(this); ②、在window这个类中,才调用了setContentView(),这是最终的调用 在Activity的setContentView方法中,实际上是调用:getWindow().setContentView(view, params); 这里的getWindow()就是获取到一个Window对象 Tips: 为啥attch优先于onCreate调用,就是由于在attch方法中,会创建window,有了window才能调用setContentView 3、在IPolicy的实现类中创建了PhoneWindow: ①、由mWindow =

android中禁止横竖屏切换

筅森魡賤 提交于 2020-02-29 12:25:52
在Android中要让一个程序的界面始终保持一个方向,不随手机方向转动而变化的办法: 只要在AndroidManifest.xml里面配置一下就可以了。 在AndroidManifest.xml的activity(需要禁止转向的activity)配置中加入 android:screenOrientation=”landscape”属性即可(landscape是横向,portrait是纵向)。例如: Java 代码 1. <application android:persistent="true" 2. android:label="@string/home_title" 3. android:icon="@drawable/ic_launcher_home"> 4. 5. <activity android:name="Home" 6. android:theme="@style/Theme" 7. android:launchMode="singleInstance" 8. android:stateNotNeeded="true" 9. android:screenOrientation="portrait"> 10. <intent-filter> 11. <action android:name="android.intent.action.MAIN" /> 12.

Android开发学习记录(2015-05-19 23:05:34更新)

限于喜欢 提交于 2020-02-29 11:12:56
占个坑位,日后增加,哈哈 ----------------- 分割线 ------------------- 发了以上这篇日志,居然意外的访问量飙升,几小时阅读破百。 真心搞不懂,是不是我这个标题太惹人注意了。真心感觉对不起观众。我一定会抓紧学习。多记录些。 ----------------- 分割线 ------------------- 学着组织一个Android App 2015-05-15 01:10:37 之前做一个练手App,把公司手机网站做成了Android原生界面,没有写啥代码。主要是为了熟悉 Android自带控件的属性 视图布局的组织 Activity的生命周期、跳转、传值等 现在开始着手开展第二个练手的App。方向是做一个大学的新闻的客户端。我想应该有很多可以值得实践的。始终觉得一个良好的代码组织结构,是一个优秀程序的良好开端。在github还有gitosc上找了一些新闻客户端,做参考。感觉结构挺混乱的,仅仅为了练手的 感觉。所以只能找非新闻类的开源App来做参考,正好今天欣喜的发现osc的Android开源客户端的v2版本已经公布在gitosc上。于是边学分析,边学着开始做下。 首先在App的包下有4个文件,作为初学者,我一开始不太明白,为啥需要这几个东西。 研究了一会以后,我觉得大概可能是这样子的: AppConfig:应用程序配置类

Android创建启动画面

本秂侑毒 提交于 2020-02-29 06:02:07
每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO、公司的LOGO或者开发者信息。如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间。   1.制作Splash界面   突出产品LOGO,产品名称,产品主要特色;   注明产品的版本信息;   注明公司信息或者开发者信息;   背景图片,亦可以用背景颜色代替;   2.处理后台资源   大多数的Splash界面都是会等待一定时间,然后切换到下一个界面;   其实,在这段时间里,可以对系统状况进行检测,比如网络是否通,电源是否充足;   或者,预先加载相关数据;   为了能让启动界面展现时间固定,需要计算执行以上预处理任务所花费的时间,那么:启动界面SLEEP的时间=固定时间-预处理任务时间; 思路有两个,一个是用两个Activity来做,一个用来做启动画面,另一个是主页面;还可以用一个 Activity来做,程 序启动时显现启动画面,当启动完成后,它会被隐藏 来。 方法一: 两个Activity,通过线程 延迟指定的时间再执行 Activity的跳转,我们需要建立两个 Activity,一个是SplashActivity,用来做启动画面。另一个是HelloWorldActivity。在这里只是说明如何来做启动画面,所以就不详细来完成Activity了。

Activity和Fragment生命周期对比

僤鯓⒐⒋嵵緔 提交于 2020-02-29 03:41:26
Fragment生命周期 onAttach onCreate onCreateView onActivityCreate ______以上相当于Activity的onCreate方法 onStart ______相当于Activity的onStart方法 onResume ______相当于Activity的onResume方法 onPause ______相当于Activity的onPause方法 onStop ______相当于Activity的onStop方法 onDestroyView onDestroy onDetach ______以上相当于Activity的onDestroy方法 当Activity包含一个Fragment的时候,Activity和Fragment生命周期的变化: Activity(onCreate)---> Fragment(onAttach onCreate onCreateView onActivityCreate)---> Activity(onStart)---> Fragment(onStart)---> Activity(onResume)---> Fragment(onResume)---> Fragment(onPause)---> Activity(onPause)---> Fragment(onStop)---> Activity

【App测试】怎么测试启动时间?

天大地大妈咪最大 提交于 2020-02-29 03:16:42
版权声明:本文由 何小伟 原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/687066001482481827 来源:腾云阁 https://www.qcloud.com/community 背景介绍 Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了——应用耗电大; 2)首次/非首次启动应用,进入应用特别慢——应用启动慢; 3)应用使用过程中,越来越卡——CPU能力不足/内存泄露; 4)应用页面卡顿——帧率较低、页面卡顿。 因此,对开发的Android应用,必须对其进行性能测试,不然将会直接影响用户体验。 Android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等。本次先介绍启动时间的测试方法。 启动时间对于App的性能测试,启动时间是个重要指标,启动时间分为两种情况,一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),另一种是热启动,即App从被切换到前台(点back退出后再点击图标启动)。QA测试时,一般关注冷启动的启动时间。以下介绍三种测试启动时间的方法,供大家参考,可以有针对性的使用。 1.1 使用adb命令 1.1.1 测试方法 输入 adbshell am start -W packagename/MainActivity

替换unimrcp的VAD模块

丶灬走出姿态 提交于 2020-02-29 01:50:16
摘要: unimrcp vad 模块voice activity dector一直认为比较粗暴,而且unimrcp的社区也很久没有更新了。使用原始unimrcp如果只是用来做Demo演示,通过手动调整参数,还是可以的。但是距离生产环境,还是有很远的一段路。 这篇文章介绍如何使用webRtc vad模块替换原来的算法。 【题外话:昨天开了题目,因为有事,没有更新,今天补上】 unimrcp 的vad的模块,在libs/mpf/src/mpf_activity_detector.c 文件中,主要算法函数如下: 1 static apr_size_t mpf_activity_detector_level_calculate(const mpf_frame_t *frame) 2 { 3 apr_size_t sum = 0; 4 apr_size_t count = frame->codec_frame.size/2; 5 const apr_int16_t *cur = frame->codec_frame.buffer; 6 const apr_int16_t *end = cur + count; 7 8 for(; cur < end; cur++) { 9 if(*cur < 0) { 10 sum -= *cur; 11 } 12 else { 13 sum += *cur

android四大组件之intent

半腔热情 提交于 2020-02-28 22:58:26
什么是Intent Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来完成请求。比如,有一个Activity希望打开网页浏览器查看某一网页的内容,那么这个Activity只需要发出WEB_SEARCH_ACTION给Android,Android就会根据Intent的请求内容,查询各组件注册时声明的IntentFilter,找到网页浏览器的Activity来浏览网页。 Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的,不同类型的组件有不同的传递Intent方式: 要激活一个新的Activity,或者让一个现有的Activity做新的操作,可以通过调用Context.startActivity()或者Activity.startActivityForResult()方法。 要启动一个新的Service,或者向一个已有的Service传递新的指令,调用Context.startService()方法或者调用Context.bindService()方法将调用此方法的上下文对象与Service绑定。 Context