android怎样防止当前应用activity被其它应用覆盖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android怎样防止当前应用activity被其它应用覆盖相关的知识,希望对你有一定的参考价值。
参考技术A 你这样想这样的android平台还有什么意义,如果只是一个应用,你不用担心被其他应用覆盖;除非是Android在系统级做处理 参考技术B 答得上的乃神人 参考技术C 擦 问题问的傻 估计没人能回答android中的context是起啥作用的?
我的问题是这样的:
许多函数调用的时候都需要提供context,而activity也是继承自context的,很多时候可以直接传一个this指针。那么这个context类起了怎样的作用?为什么要这些时候传context过去,这样做是因为android使用了怎样的机制?
当我们访问当前应用的资源,启动一个新的activity的时候都需要提供Context。
Context是一个抽象基类,我们通过它访问当前包的资源(getResources、getAssets)和启动其他组件(Activity、Service、Broadcast)以及得到各种服务(getSystemService),当然,通过Context能得到的不仅仅只有上述这些内容。对Context的理解可以来说:Context提供了一个应用的运行环境,在Context的大环境里,应用才可以访问资源,才能完成和其他组件、服务的交互,Context定义了一套基本的功能接口,可以理解为一套规范,而Activity和Service是实现这套规范的子类,这么说也许并不准确,因为这套规范实际是被ContextImpl类统一实现的,Activity和Service只是继承并有选择性地重写了某些规范的实现。
activity继承关系
Service和Application
可以看出几个组件都继承于Context
一个应用中Context的数量等于Activity的个数 + Service的个数 + 1,这个1为Application
参考技术A Context字面意思是上下文,位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄。很多方法需要通过 Context才能识别调用者的实例:比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的实例为Activity,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity以及Service。Context提供了关于应用环境全局信息的接口。它是一个抽象类,它的执行被Android系统所提供。它允许获取以应用为特征的资源和类型。同时启动应用级的操作,如启动Activity,broadcasting和接收intents。本回答被提问者和网友采纳
以上是关于android怎样防止当前应用activity被其它应用覆盖的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android M 或更高版本中在运行时更改权限时防止重新创建 Activity