在调试我的应用程序时,在我的LogCat中,我经常得到:
E/TelephonyManager(5382): Hidden constructor called more than once per process!
我一直在谷歌上搜索一下,虽然我注意到其他提到的错误(在其他日志中),但我无法确定其含义。
那么这个错误是什么?我为什么要这样做?它的意义是什么?
答案 0 :(得分:0)
这是来自Android源代码:
/ ** *提供对有关电话服务的信息的访问 * 装置。应用程序可以使用此类中的方法 *确定电话服务和状态,以及访问一些 *订户信息的类型。应用程序也可以注册 *收听电话状态变化通知的听众。 *
*您不直接实例化此类;相反,你检索 *对实例的引用 * {@link android.content.Context#getSystemService * Context.getSystemService(Context.TELEPHONY_SERVICE)}。 *
*请注意,访问某些电话信息是 *受许可保护。您的应用程序无法访问受保护的 *信息,除非它具有声明的适当权限 *其清单文件。如果权限适用,则会在权限中注明 *您访问受保护信息的方法。 * /
public class TelephonyManager {
private static final String TAG = "TelephonyManager";
private static Context sContext;
private static ITelephonyRegistry sRegistry;
/** @hide */
public TelephonyManager(Context context) {
context = context.getApplicationContext();
if (sContext == null) {
sContext = context;
sRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
"telephony.registry"));
} else if (sContext != context) {
Log.e(TAG, "Hidden constructor called more than once per process!");
Log.e(TAG, "Original: " + sContext.getPackageName() + ", new: " +
context.getPackageName());
}
}
TelephonyManager似乎把“每个进程多次调用隐藏的构造函数!”当应用程序多次调用构造函数时,如同消息所示,进入日志。根据构造函数的注释,使用getSystemService调用构造函数。
您是否有多个实例:
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
或代码中的类似内容?这可能会导致错误。
编辑:如果不是你的代码导致了消息,那么我认为这是运行PID 5382的程序。