很多时候应用程序无法启动,因为Tag Manager失败。 加载容器时我得到了很多错误堆栈跟踪。 以下是Tag Manager强制应用程序在开始之前冻结时发生的情况:
1)PackageManager:名为“com.company.myapp.dev.debug”的包不存在。
2)InstalledAppDetails:检索包时出现异常:com.company.myapp.dev.debug
android.content.pm.PackageManager$NameNotFoundException:
3)StrictMode:StrictMode策略违规; 〜duration = 270 ms:android.os.StrictMode $ StrictModeDiskReadViolation:policy = 31 violation = 2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1137)
有什么方法可以阻止这种情况吗?为什么会这样?
我将TagManger隔离在Singleton中,这是初始化的代码:
public void init(final Activity context)
{
this.tagManager = TagManager.getInstance(context);
tagManager.setVerboseLoggingEnabled(true);
PendingResult<ContainerHolder> pendingResult =
tagManager.loadContainerPreferNonDefault(
context.getString(R.string.gtm_container_id),
R.raw.gtm_default_container);
pendingResult.setResultCallback(new ResultCallback<ContainerHolder>()
{
@Override public void onResult(ContainerHolder containerHolder)
{
setContainerHolder(containerHolder);
containerHolder.getContainer();
if (!containerHolder.getStatus().isSuccess()) {
Log.e(TAG, "Failed to load container.");
// return;
} else {
setContainerHolder(containerHolder);
containerHolder.setContainerAvailableListener(new ContainerLoadedCallback());
}
pushEnvironment();
launchApp(context);
}
}, 2, TimeUnit.SECONDS);
}
它与CuteAnimals示例几乎完全相同。
答案 0 :(得分:0)
有同样的问题,当mDataLayer.pushEvent(事件,地图)时应用程序冻结。 我在pendingResult.setResultCallback(...);
之后检查new Thread(new Runnable() {
@Override
public void run() {
try {
AdvertisingIdClient.Info info = AdvertisingIdClient.getAdvertisingIdInfo(App.getInstance().getApplicationContext());
if (info == null) mGtmAvailable = false;
} catch (Exception e) {
mGtmAvailable = false;
}
if (mGtmAvailable) {
GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
int resultCode = apiAvailability.isGooglePlayServicesAvailable(App.getInstance().getApplicationContext());
if (resultCode != ConnectionResult.SUCCESS)
mGtmAvailable = false;
}
}).start();
然后检查mGtmAvailable befor mDataLayer.pushEvent(event,map)