gpt4 book ai didi

android - 确定由哪个进程调用 Application.onCreate()

转载 作者:可可西里 更新时间:2023-10-31 22:03:41 26 4
gpt4 key购买 nike

在我的应用程序中,我有本地服务,需要在单独的进程中运行。它被指定为

<service android:name=".MyService" android:process=":myservice"></service>

在 AndroidManifest.xml 中。我还将 Application 对象子类化,并希望在它的 onCreate 方法中检测它何时被普通启动调用以及何时被 myservice 启动调用。我找到的唯一可行的解​​决方案由

描述

https://stackoverflow.com/a/28907058/2289482

但我不想获取设备上所有正在运行的进程并迭代它们。我尝试使用 Context 中的 getApplicationInfo().processName,但不幸的是它总是返回相同的字符串,而上面链接中的解决方案返回:myPackage,myPackage:myservice。我一开始不需要 processName,但是一些好的解决方案可以确定普通启动何时调用 onCreate 方法以及 myservice 启动何时调用。可能可以通过在某处应用某种标签或标签来完成,但我没有找到如何去做。

最佳答案

您可以使用此代码获取进程名称:

    int myPid = android.os.Process.myPid(); // Get my Process ID
InputStreamReader reader = null;
try {
reader = new InputStreamReader(
new FileInputStream("/proc/" + myPid + "/cmdline"));
StringBuilder processName = new StringBuilder();
int c;
while ((c = reader.read()) > 0) {
processName.append((char) c);
}
// processName.toString() is my process name!
Log.v("XXX", "My process name is: " + processName.toString());
} catch (Exception e) {
// ignore
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
// Ignore
}
}
}

关于android - 确定由哪个进程调用 Application.onCreate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30827097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com