您现在的位置是:主页 > news > 网站模板下载之后如何修改/原创文章代写平台

网站模板下载之后如何修改/原创文章代写平台

admin2025/5/18 15:05:22news

简介网站模板下载之后如何修改,原创文章代写平台,微信电商小程序,c语言开发网站教程写在文章前面的话: “工欲行其事,必先利其器”,英雄和侠客更需要宝剑助己成功。同样,在现代软件开发环境中,每个Android开发者都需要更好的工具,帮助我们增强功能、提高效率。 在这个竞争激烈的行业中&…

网站模板下载之后如何修改,原创文章代写平台,微信电商小程序,c语言开发网站教程写在文章前面的话: “工欲行其事,必先利其器”,英雄和侠客更需要宝剑助己成功。同样,在现代软件开发环境中,每个Android开发者都需要更好的工具,帮助我们增强功能、提高效率。 在这个竞争激烈的行业中&…

写在文章前面的话:

“工欲行其事,必先利其器”,英雄和侠客更需要宝剑助己成功。同样,在现代软件开发环境中,每个Android开发者都需要更好的工具,帮助我们增强功能、提高效率。
在这个竞争激烈的行业中,只有优秀的工程师能够生存,需要我们能够为客户提供的最佳技术和资源,需要有优秀的开发工具,保证以最佳质量以及高效时间来构建。

一、 什么是Context?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-omWGzlWb-1623415634639)(//upload-images.jianshu.io/upload_images/4037105-bf283f5324e5a188.png?imageMogr2/auto-orient/strip|imageView2/2/w/470/format/webp)]

通过金山词霸解释:上下文环境,什么是环境,这个词只可意会不可言传,为了大家更好的理解,举一个栗子,比如:我想点鸡,我在麦当劳跟服务员说我想点鸡,服务员给端上来一只香喷喷的烤鸡,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V7oalK6t-1623415634641)(//upload-images.jianshu.io/upload_images/4037105-3f21cf0410b902fd.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/330/format/webp)]

但是我换一个环境 ,去红灯区点鸡,妈咪就会给带来一只呆萌可爱的失足少女,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qlKTEB3P-1623415634643)(//upload-images.jianshu.io/upload_images/4037105-24dddb07d9119c2a.jpg?imageMogr2/auto-orient/strip|imageView2/2/w/252/format/webp)]

这就是环境,一样的东西不同地方,就表示不一样的意思。

Context,中文直译为“上下文”,SDK中对其说明如下:

Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for
application-level operations such as launching activities, broadcasting and receiving intents, etc

从上可知一下三点,即:

1)它描述的是一个应用程序环境的信息,即上下文。

2)该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。

3)通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息 等。。

首先看它们的继承关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cRzHEpqh-1623415634646)(//upload-images.jianshu.io/upload_images/4037105-3f6dfbce58383d95.png?imageMogr2/auto-orient/strip|imageView2/2/w/469/format/webp)]

二、 什么时候创建Context实例

熟悉了Context的继承关系后,我们接下来分析应用程序在什么情况需要创建Context对象的?应用程序创建Context实例的情况有如下几种情况:

  1. 创建Application 对象时, 而且整个App共一个Application对象
  2. 创建Service对象时
  3. 创建Activity对象时

因此应用程序App共有的Context数目公式为:

总Context实例个数 = Service个数 + Activity个数 + 1(Application对应的Context实例)

1、创建Application对象的Context:
首先新建一个MyApplication并让它继承自Application,然后在AndroidManifest.xml文件中对MyApplication进行指定,如下所示:

<applicationandroid:name=".MyApplication"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" >......
</application>

指定完成后,当我们的程序启动时Android系统就会创建一个MyApplication的实例,通过如下代码获取到它的实例:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MyApplication myApp = (MyApplication) getApplication();Log.d("TAG", "getApplication is " + myApp);}}

可以看到,代码很简单,只需要调用getApplication()方法就能拿到我们自定义的Application的实例了,打印结果如下所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oylE4wV0-1623415634648)(//upload-images.jianshu.io/upload_images/4037105-bf6808194c852db6.png?imageMogr2/auto-orient/strip|imageView2/2/w/601/format/webp)]

那么除了getApplication()方法,其实还有一个getApplicationContext()方法,这两个方法看上去好像有点关联,那么它们的区别是什么呢?我们将代码修改一下:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);MyApplication myApp = (MyApplication) getApplication();Log.d("TAG", "getApplication is " + myApp);Context appContext = getApplicationContext();Log.d("TAG", "getApplicationContext is " + appContext);}
}

同样,我们把getApplicationContext()的结果打印了出来,现在重新运行代码,结果如下图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p3gbCPIB-1623415634649)(//upload-images.jianshu.io/upload_images/4037105-308f49c6b7acc8f2.png?imageMogr2/auto-orient/strip|imageView2/2/w/667/format/webp)]

打印出的结果是一样的呀,连后面的内存地址都是相同的,看来它们是同一个对象。其实这个结果也很好理解,Application本身就是一个Context,所以这里获取getApplicationContext()得到的结果就是MyApplication本身的实例。

那么有的朋友可能就会问了,既然这两个方法得到的结果都是相同的,那么Android为什么要提供两个功能重复的方法呢?实际上这两个方法在作用域上有比较大的区别。getApplication()方法的语义性非常强,一看就知道是用来获取Application实例的,但是这个方法只有在Activity和Service中才能调用的到。那么也许在绝大多数情况下我们都是在Activity或者Service中使用Application的,但是如果在一些其它的场景,比如BroadcastReceiver中也想获得Application的实例,这时就可以借助getApplicationContext()方法了,如下所示:

public class MyReceiver extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {  MyApplication myApp = (MyApplication) context.getApplicationContext();  Log.d("TAG", "myApp is " + myApp);  }  }  

也就是说,getApplicationContext()方法的作用域会更广一些,任何一个Context的实例,只要调用getApplicationContext()方法都可以拿到我们的Application对象。

作者:马伟奇
链接:https://www.jianshu.com/p/2706c13a1769

推荐阅读(面经汇总):
做了六年Android,终于熬出头了,15K到31K全靠这份高级面试题+解析

最后

赠送大家一套完整的Android学习资料吧。

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。

后面我就自己整理了一套资料,还别说,真香!

资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。

附上白嫖地址:《Android架构视频+BATJ面试专题PDF+学习笔记》

系列教程图片

2020Android复习资料汇总.png

flutter

NDK

设计思想开源框架

-1623415634652)]

[外链图片转存中…(img-PJhFoN2f-1623415634653)]

[外链图片转存中…(img-kVpzarAv-1623415634654)]

[外链图片转存中…(img-VjQkYwcy-1623415634654)]

微信小程序