use*_*482 5 android android-service
在我的应用程序中,我有本地服务,它需要在单独的进程中运行。它被指定为
<service android:name=".MyService" android:process=":myservice"></service>
Run Code Online (Sandbox Code Playgroud)
在 AndroidManifest.xml 中。我还对 Application 对象进行子类化,并希望在其 onCreate 方法中检测何时由普通启动调用以及何时由 myservice 启动调用。我找到的唯一可行的解决方案是由
但我不想获取设备上所有正在运行的进程并迭代它们。我尝试使用 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
}
}
}
Run Code Online (Sandbox Code Playgroud)