android开发:activity上下文之外启动activity注意的地方

在Android开发中,从非Activity上下文启动Activity时可能会遇到异常。解决这个问题需要设置适当的上下文。Context是应用程序环境信息的抽象类,包括Activity、Application和Service等实现。Context用于启动Activity、发送广播等操作。当使用非Activity的Context启动Activity时,如果不正确处理,会抛出异常。而在Activity内部启动Activity则不会有此问题,因为Activity重写了startActivity方法。
摘要由CSDN通过智能技术生成

有过一点android经验的同学应该知道,在activity之外去启动一个activity一般会报这么一个异常。
解决办法是需要我们设置:intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? at android.app.ContextImpl.startActivity(ContextImpl.java:672) at android.app.ContextImpl.startActivity(ContextImpl.java:659) at android.content.ContextWrapper.startActivity(ContextWrapper.java:331) at realmusic.ace.com.myapplication.MyService$1.run(MyService.java:32) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Context是什么:Context描述的是一个应用程序环境的信息,这是一个抽象(abstract class)类,Android提供了该抽象类的很多具体实现类,比如我们常用的Service,Application,Activity。通过它我们可做一些应用级别操作,例如:启动一个Activity,发送广播,启动服务、获取系统资源等。

Context类的结构图:
在这里插入图片描述
我们可以看到Activity、Application、Service都是context的间接子类。
在Context中,定义了startActivity方法

public abstract void startActivity(Intent intent);

ContextWrapper继承覆盖了这个方法

@Override
    public void startActivity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值