首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

四年Android面试遇到的问题整理

()的调用时机 解析: 在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题...为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate...因为静态的内部类不会持有外部类的引用,所以不会导致外部类实例的内存泄露 12.简述Android的视图层级优化,简述自定义View或者自定义ViewGroup的步骤 个人的理解是,Android视图渲染必须经过...实际运用: Android中Context类的实现 外观模式:主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单得使用子系统。...字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。

57310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    应用首页Activity的单例实现

    主Activity启动模式的选择 看下android中Activity的launchMode,关于这方面的介绍总结资料很多,这里简单说明: standard: 每次启动都会创建 singleTop:跟...引入统一处理跳转的Acitivity 为了解决以上三个问题,我们加入专门用来处理跳转请求的Activity,该acitivity主要作用: 1.统一处理外部跳转的请求,规范外部跳转协议 2.统一内部Activity...跳转逻辑,并且内部Activity跳转不受第三方跳转影响 3.保证主桌面模式的实现,如控制任务栈恢复,栈顶Activity清除 为了实现可以返回主Activity功能,外部跳转的大概流程为: ?...,这样就可以保证不管以哪种方式启动,都只有一个主Activity,在主Activity复用时,注意处理onNewIntent,注意将intent保存下来: @Override public...Activity finish掉,并且调用已有Activity的onNewIntent进行跳转,以达到主Activity不被重复创建的目的。

    2.7K61

    酷炫的外部开启Activity新姿势

    酷炫的外部开启Activity新姿势 在H5页面疯狂的今天,H5和Native的交互就至关重要,而且交互的方式有很多,google提供了一个公共的方式:js与native互调,即js可以调用Native...goodsId=10011002 通过上面的路径 Scheme、Host、port、path、query全部包含,基本上平时使用路径就是这样子的。...scheme的使用 使用起来还是非常简单的: 1.在Androidmanifest.xml中定义scheme activity android:name=".ProcessActivity">...实战演示 接下来我们完成一个小DEMO,主要功能通过外部APP打开对应的Activity并传递相关数据。...除了在外部app可以打开,在内部也可以使用这个方法,同样H5页面也可,这样APP之间的交互就方便多了,不过具体的还是要和业务相关联 更多参数可以自己根据业务来定,这里只是给大家一个启发。

    64210

    深入理解Activity启动模式之launchMode

    任务栈是一种“后进先出”的栈结构,通过back键,我们可以发现这些Activity会一一出栈(PS:不断返回上一页)。如果每次启动Activity都创建一个实例,会不会很浪费资源。...能不能进行Activity的复用呢?Android系统在设计就考虑到这个问题,所以提供了同步的Activity启动模式,在不同条件下进行Activity的复用。...在这种模式下启动的activity可以被多次实例化,即在同一个任务中可以存在多个activity的实例,每个实例都会处理一个Intent对象。 ?...的实例已经存在于任务桟的桟顶,那么再启动这个Activity时,不会创建新的实例,而是重用位于栈顶的那个实例,并且会调用该实例的onNewIntent()方法将Intent对象传递到这个实例中。...如果系统中已经存在这样的一个activity则会重用这个实例,并且调用他的onNewIntent()方法。即,这样的一个activity在系统中只会存在一个实例。 ?

    1.2K60

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    注:上述方法仅仅只是结束当前App所有的Activity (在用户的角度确实是退出了 App),但实际上该App的进程还未结束。 2.1.2 具体介绍 a....Activity 回调的onNewIntent()中关闭自身即可 若在后面的Activity启动 任务栈底的Activity时,就会调用任务栈底Activity的onNewIntent() 具体实现...Activity采用SingleTask启动模式 使用范围局限:只能结束当前任务栈的Activity,若出现多任务栈(即采用SingleInstance启动模式)则无法处理 应用场景 Activity...startActivity(intent); 优点 使用简单 & 方便 缺点 使用范围局限:只能结束当前任务栈的Activity,若出现多任务栈(即采用SingleInstance启动模式)则无法处理...启动模式)则无法处理 对 Android 版本要求较高:Android 5.0以上 应用场景 Android 5.0以上的 Activity单任务栈 ---- b.

    2K42

    Carson带你学Android:这里涵盖了所有实现 “一键退出 App” 的方法

    所有的Activity (在用户的角度确实是退出了 App),但实际上该App的进程还未结束。...启动模式的特点) 通过在入口 Activity 回调的onNewIntent()中关闭自身即可 若在后面的Activity启动 任务栈底的Activity时,就会调用任务栈底Activity的onNewIntent...Activity采用SingleTask启动模式 使用范围局限:只能结束当前任务栈的Activity,若出现多任务栈(即采用SingleInstance启动模式)则无法处理 应用场景 Activity...则无法处理 应用场景 Activity单任务栈 方法3:通过系统任务栈 原理:通过 ActivityManager 获取当前系统的任务栈 & 把栈内所有Activity逐个退出 具体使用...启动模式)则无法处理 对 Android 版本要求较高:Android 5.0以上 应用场景 Android 5.0以上的 Activity单任务栈 b.

    78120

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    注:上述方法仅仅只是结束当前App所有的Activity (在用户的角度确实是退出了 App),但实际上该App的进程还未结束。...Activity的onNewIntent() 通过在入口 Activity 回调的onNewIntent()中关闭自身即可 当需要退出 App时启动入口 Activity 将 App的入口 Activity...)则无法处理 应用场景 1....使用范围局限:只能结束当前任务栈的Activity,若出现多任务栈(即采用SingleInstance启动模式)则无法处理 应用场景 1....使用简单、方便 缺点 使用范围局限:只能结束当前任务栈的Activity,若出现多任务栈(即采用SingleInstance启动模式)则无法处理 对 Android 版本要求较高:Android 5.0

    56820

    深入理解 Android Activity 启动模式

    在 Android 应用开发中,Activity 是用户界面的核心组件,而 Activity 的启动模式则是决定应用界面如何在任务栈中交互、管理以及呈现的关键因素。...如下所示: activity android:name=".MainActivity" android:launchMode="singleTop"> activity> 处理...SingleTop 模式 在 SingleTop 模式下,我们可以通过重写 onNewIntent() 方法来处理新的意图或更新数据,示例代码如下: public class MyActivity extends...// 在这里处理新的意图或更新数据 } } 处理 SingleTask 模式 在 SingleTask 模式下,我们同样需要在 onNewIntent() 方法中处理新的意图或更新数据。...结论 在 Android 应用开发中,合理的 Activity 启动模式选择能够极大地影响应用的性能和用户体验。

    38820

    Android Activity的启动模式

    简介 Activity有四种加载模式 standard singleTop singleTask singleInstance 设置方式 android:launchMode="singleTask"...standard: 标准(默认)模式 当通过这种模式来启动Activity时,Android总会为目标 Activity创建一个新的实例,并将该Activity添加到当前 Task栈中.注意,这种方式不会启动新的...:当将要被 启动的Activity已经位于Task栈顶时,系统不会重新创建 目标Activity实例,而是直接复用Task栈顶的Activity 假设 栈结构为 ABC 再打开C C为singleTop...singleInstance模式加载Activity时,又分为以下 两种情况: (1)如果将要启动的Activity不存在,那么系统将会先创建一个 全新的Task,再创建目标Activity实例并将该Activity...实例 放入此全新的Task中 (2)如果将要启动的Activity已存在,那么无论它位于哪个应用 程序,哪个Task中;系统都会把该Activity所在的Task转到 前台,从而使该Activity

    59330

    android activity自动跳转,Android activity跳转之finish()方法的作用

    大家好,又见面了,我是你们的朋友全栈君。...最近在看郭神的《第一行代码(第2版)》,温故知新,看到有很多地方在页面跳转后还加了一句:finish();,原来像下面代码这样用 Intent 从 A activity 跳到 B activity :...Intent intent = new Intent(A.this, B.class); startActivity(intent); 当成功跳到 B activity 的时候再点击返回键,就再次返回到了...跳转到 B activity 的时候,再点击返回键,B activity 会跳转到 A activity 之前的那个 activity,而不会返回到 A activity (如果 A activity...场景2:在订单列表中,A activity 中点击新建订单进入新建订单 B activity 中,点击保存后,跳转到订单详情 C activity 中(在 B activity 的跳转到 C activity

    1.4K20

    基于android的_android studio创建activity

    Android 如何判断一个应用在运行 在一个应用中,或一个Service 、Receiver中判断一个应用是否正在运行,以便进行一些相关的处理。...这个时候我们需要得到一个ActivityManager,这个Manager顾名思意就是管理Activity的,它有一个方法叫getRunningTasks,可以得到当前系统正在运行的Task的列表,代码如下...,info.topActivity表示当前正在运行的Activity,info.baseActivity表系统后台有此进程在运行,具体要做如何判断就看自已的业务需求。...topActivity就是当前Task的活跃Activity 在getRunningTasks()所返回的Task队列中系统会根据这些Task的活跃度有一个排序,越活跃越是靠前。...取当前显示的activity是什么 ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName

    78910

    Activity 跳转详解

    -- action android:name 配置用于启动此Activity的请求字串 --> 处理显示 public class MainActivity extends Activity { @Override protected void...在onResume()方法中处理显示 但是上面的写法对用户的体验非常不好,因为每条短信都会重新创建一个Activity对象压入任务栈,我们要是想不创建新的Activity只在当前Activity中显示又该如何做呢...首先想到的是在将Activity的启动模式设置成 android:launchMode="singleTop" 这代表任务栈栈顶只能存在一个此Activity对象,这样我们在重复跳转的时候就不会重新创建了...Activity 将总是被 paused 之后才去接收一个新的intent,所以你可以等此方法(onNewIntent)被调用完毕时,在 onResume() 方法中去写自己的代码。

    63120

    Activity启动模式SingleTask和Intent.FLAG_ACTIVITY_CLEAR_TOP区别

    如果是,则不创建新的 activity B 实例而是直接引用这个栈顶实例,同时 B 的 onNewIntent 方法会被回调,通过该方法的参数可以取得当前 Intent 的信息;如果栈顶不是 activity...但是,如果这个 Activity 已经存在于另一个任务栈中,则系统会销毁该 Activity 以上的所有Activity,然后调用该 Activity的 onNewIntent() 方法,不会创建新的实例...onNewIntent方法,如果该Activity不存在,则创建该Activity并将其入栈到该Activity所需的任务栈中。...Intent.FLAG_ACTIVITY_CLEAR_TOP:销毁目标Activity和它之上的所有Activity,重新创建目标Activity,不会调用onNewIntent方法。...会销毁目标Activity之上的Activity并复用已经存在的目标Activity(调用onNewIntent),但Intent.FLAG_ACTIVITY_CLEAR_TOP会连同目标Activity

    1.1K10

    获取屏幕上正在显示的activity 博客分类: Android小技巧

    用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。...仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。...而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。 getRunningTasks有个整型参数,表示返回列表的最大个数。...那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。...ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks

    2.9K30
    领券