在我的LogCat调试我的应用程序时,我经常得到:
E/TelephonyManager(5382): Hidden constructor called more than once per process!
我一直在谷歌搜索,虽然我注意到其他提到的错误(在其他日志中),我无法确定它的含义.
那么这个错误是什么?我为什么要这样做?它的意义是什么?
解决方法
这是来自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的程序.