利用Application管理Activity,实现在Activity_A中得到Activity_B的实例,具体如何做

利用Application管理Activity,实现在Activity_A中得到Activity_B的实例,具体如何做,第1张

在application中可以存放Acitivity_B的实例,并且设置get 和 set 方法,这样,就可以在应用程序中随时从application中获取到Activty_B的实例了。

activiti中内嵌子流程(call activity)是新启动一个流程,该子流程和父流程没有父子关系。该子流程的proc_inst_id_的parent_id_是空的。如果想要获取父流程的proc_inst_id_,可以通过执行环境(id_)和父执行环境(super_exec_)来获取。上述字段都是act_ru_execution表中。

配置子流程start监听器,监听器中去获取父流程实例ID

表中第三条记录是流程实例ID为 2830018 ,执行环境ID为 2830018 的子流程记录。该记录的父执行环境ID为 2830016 ,通过父执行环境ID定位到第二条记录,从而获取父流程实例ID 2830001

Get Parent ProcessInstance Id from a SubProcess CallActivity

   MainActivity 通过 startActivityForResult 启动 MainActivity2 ,同时传递一个 Bundle 对象给 MainActivity2 ,在 MainActivity2 中通过 getIntent 获取到传递过来的 Bundle ,进而得到 MainActivity 传递过来的String 数据并打印。

  在 MainActivity2 中通过 setResult 设置需要传递给 MainActivity 的 Bundle 数据,在 MainActivity 的 onActivityResult 函数中就可以得到相关的 Bundle 数据。

  每一个Android应用都有一个 Application 对象,这个 Application 会贯穿整个Android应用,在其中定义的变量,它的生命周期也是和整个应用的生命周期一样。

  在 MainActivity 中定义了一个 伴生变量 ,它相当于 Java中的静态变量 ,而在 MainActivity2 中可以获取此静态变量,并对其进行修改。

  通过 Fragment 的 setArguments(bundle) 实现 Activity 想 Fragment 传值。

  通过 onAttach(activity: Activity) 方法获得 activity 实例,直接调用 activity 中的方法获得数据。

   Service 的 onBind 方法需要返回一个 Binder 对象,而这个对象在 ServiceConnectiononServiceConnected 中可以获取,从而实现 Service 和 Activity 之间的通信。

   startService 时,传入参数 intent 可以携带部分参数给 Service ,我们可以在 Service 的 onStartCommand 方法中得到 startService 传递过来的 intent 数据。

  在service中持有 callback 接口,并在binder中定义方法得到service的实例。activity中实现 ServiceConnection ,通过绑定启动service,这样会回调 ServiceConnection 接口的 onServiceConnected 方法,从而得到service实例,对service中的 callback 进行赋值,在service中可进行耗时 *** 作并见数据通过callback接口,传递给activity进行其他 *** 作。

除了上面说的常用方法外,还有很多其他方法,比如广播机制,事件总汇(eventbus)等。

1一般来说,这样做是不好的如果要这样做,说明你的设计存在一定的问题

首先从面向对象设计来说,不应该直接引用其他类的变量,而只应该通过类的方法来完成对类的 *** 作

此外因为Activity生命周期的管理是由android framework来实现的,你难以确切知道MainActivity的状态,无法保证引用变量的有效性

如果一定要这么做,你可以实现一个类似getInstance的静态方法,不过注意不能像单例设计模式那样,new 一个MainActivity,而是在onreate的时机给静态变量instance赋值

我擦,你这样程序还有安全可言,其他程序可以 *** 作你的Activity,再说Activity里面那么多的回调方法都是框架调用的,你获取到了实例出来有个屁用不过通过PackageManager是可以获取到其他程序的Activity的信息,包括报名,等等

以上就是关于利用Application管理Activity,实现在Activity_A中得到Activity_B的实例,具体如何做全部的内容,包括:利用Application管理Activity,实现在Activity_A中得到Activity_B的实例,具体如何做、call activity 获取父流程实例ID、Android四大组件之Activity(2)组件间通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9536074.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存