系统相关
首页 > 系统相关> > 确定通过哪个进程调用Application.onCreate()

确定通过哪个进程调用Application.onCreate()

作者:互联网

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

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

在AndroidManifest.xml中.我还对Application对象进行了子类化,并希望在普通启动和myservice启动调用时在其onCreate方法中进行检测.我发现的唯一可行的解​​决方案描述为

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

但是我不想让所有正在运行的进程都在设备上进行迭代.我尝试使用Context中的getApplicationInfo().processName,但是不幸的是,它始终返回相同的String,而上面链接中的解决方案返回: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-service,android
来源: https://codeday.me/bug/20191120/2041859.html