确定通过哪个进程调用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