有过一点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