现在的位置: 首页 > web前端 > 正文

onreceive方法的类型

2020年07月20日 web前端 ⁄ 共 944字 ⁄ 字号 评论关闭

  onReceive(...)是BroadcastReceiver的方法,当系统接收到intentbroadcast时,就会被调用到。intent可以来自于sendBroadcast(Intentintent,。


  onreceive方法的铺垫


  1).非Activity类型的context并没有所谓的任务栈;


  2).出于安全原因的考虑,Android是不允许Activity或Dialog凭空出现的,一个Activity的启动必须要建立在另一个Activity的基础之上,也就是以此形成的返回栈。而Dialog则必须在一个Activity上面弹出(除非是SystemAlert类型的Dialog),因此在这种场景下,我们只能使用Activity类型的context,否则将会出错。


  动态、静态注册的广播其onReceive()方法里的context类型


  静态注册广播,如果没声明android:process,那么BroadcastReceiver和Activity是在同一个进程的;onReceive()里传进来的context的类型最初以为是Application,但打印发现是android.app.ReceiverRestrictedContext,。此context非Activity类型,不可直接用来构造AlertDialog。


   @Override


    protectedvoidonCreate(BundlesavedInstanceState){


      super.onCreate(savedInstanceState);


      setContentView(R.layout.activity_main);


      Log.e("main","pid="+Process.myPid()+",tid="+Process.myTid());


      Threadthread=Thread.currentThread();


      Log.e("main","tid="+thread.getId()+",name="+thread.getName());


    }


  总之,onreceive给大家简单的介绍了一些,希望大家多看看。


  

抱歉!评论已关闭.