android studio中Mainactivity.this和getApplicationContext有什么不同

在Android开发中,使用Android Studio时遇到在创建加载条时,使用getApplicationContext无法成功,而替换为MainActivity.this问题得到解决。getApplicationContext返回的是整个应用的上下文,生命周期与应用同步;而MainActivity.this则表示MainActivity对象,常用于内部类引用外部Activity的Context。在需要与窗口交互或创建对话框时,应使用Activity的Context,如在创建加载条场景中,使用MainActivity.this是正确的选择。
摘要由CSDN通过智能技术生成

最近一直在学习安卓开发,但是网上的很多教程都是用eclipse开发的,我比较喜欢用android studio去开发,但是发现eclipse里面有很多和as是不同的

就比如最近写一个断点下载小程序,然后自己用as仿写了一个,发现怎么操作都添加不上加载条,后来甚至都代码几乎一模一样了都添加不了

后来自己研究,于是乎,把getApplicationContext换成了Mainactivity.this,在运行就立马可以执行了

那他们到底有什么不同呢?


getApplicationContext():

返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。


Mainactivity.this():

表示MainActivity对象,一般用在内部类中指示外面的this,如果在内部类直接用this,指示的是内部类本身。因为MainActivity继承Activity,而Activity继承Context,所以它也可以用来提供Activity Contex;


那我们举个列子,然后在判断为什么使用Mainac

在C#,`this as`是一个用于类型转换的操作符。它用于将当前对象(`this`)转换为指定的类型,并返回转换结果。如果转换成功,则返回转换后的对象;如果转换失败,则返回null。 这个操作符通常用于在运行时检查对象是否属于某个特定的类型,并且执行相应的操作。它比直接使用强制类型转换操作符(如`(type)this`)更安全,因为如果转换失败,强制类型转换会抛出异常。 以下是一个示例,演示了如何使用`this as`操作符: ```csharp class Animal { public void MakeSound() { Console.WriteLine("Animal makes a sound"); } } class Dog : Animal { public void Bark() { Console.WriteLine("Dog barks"); } } class Program { static void Main(string[] args) { Animal animal = new Dog(); Dog dog = animal as Dog; if (dog != null) { dog.Bark(); } else { Console.WriteLine("Animal is not a dog"); } } } ``` 在上面的示例,我们创建了一个`Animal`类和一个继承自`Animal`的`Dog`类。在`Main`方法,我们将一个`Dog`对象赋值给一个`Animal`类型的变量`animal`。然后,我们使用`this as Dog`将`animal`转换为`Dog`类型,并将结果赋值给`dog`变量。如果转换成功,我们调用`dog.Bark()`方法,否则输出一条消息表明`animal`不是一个`Dog`对象。 总之,`this as`操作符可以帮助我们在运行时安全地将当前对象转换为指定的类型,并根据转换结果执行相应的操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值