android 如何在应用程序内将事件从一个进程发送到另一个进程

m3eecexj  于 2023-03-11  发布在  Android
关注(0)|答案(1)|浏览(149)

场景:

  • 我有一个活动AndroidProcessActivity
  • 我从AndroidProcessActivity启动了一个新Activity NewProcessActivity,但这与之前的应用程序不同
  • 两个活动都在应用程序中

问题:

  • 现在,如何将事件从AndroidProcessActivity发送到AndroidProcessActivity
  • 这可能吗
<activity
    android:name=".game.NewProcessActivity"
    android:launchMode="singleTask"
    android:process=":testScreen"
    android:theme="@style/AppTheme">

问题与进程间通信有关

s4n0splo

s4n0splo1#

通常一个新的Activity会在同一个进程中运行(这是默认的),所以你可以简单地从Activity AndroidProcessActivity调用NewProcessActivity的成员函数,反之亦然。
例如,你可以在NewProcessActivity中使用一个单例变量,这样当你想调用一个成员函数时,你就有了一个对象,但是要注意活动可以是launched multiple times
<activity>具有进程和多进程属性,这可能导致活动在单独的进程上运行。
因为在Linux上所有的东西(包括线程)都被称为进程,我不确定是否可以简单地从主进程调用这个新进程上的方法。我建议简单地尝试一下,如果它工作的话,你必须使用Java synchronized来使所有的东西都是线程安全的。
如果这是不可能的(这是我所期望的),你必须使用IPC:

  • 使用start Intent将参数传递给活动
  • 使用broadcasts在两个方向上发送消息(如果你只需要传输简单的值,就这样做)
  • 如果你有一个复杂的API,你必须创建自己的服务并绑定它(参见bound services)。你必须写一个.aidl文件。这是IPC在Android上通常的做法。
  • 如果你有本地代码或者你想要最大的性能,你可以做本地的Linux IPC。例如,那些可以是本地套接字或者共享内存。但是这可能需要root,这是不寻常的。

相关问题