重新打开应用程序时出现 Moengage 问题
Posted
技术标签:
【中文标题】重新打开应用程序时出现 Moengage 问题【英文标题】:Moengage issue when application is reopened 【发布时间】:2017-10-23 08:32:46 【问题描述】:当应用程序进入前台时应用程序崩溃。 当应用程序被杀死并重新启动时,它不会崩溃,但是当它被最小化并重新打开时,它会崩溃并出现以下异常
java.lang.NoClassDefFoundError: com.moengage.locationlibrary.LocationHandlerImpl 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:324) 在 java.lang.Class.forName(Class.java:285) 在 com.moengage.location.GeoManager.getHandler(GeoManager.java:33) 在 com.moengage.core.MoEDispatcher.syncInAppsAndGeo(MoEDispatcher.java:209) 在 com.moengage.core.MoEDispatcher.onStart(MoEDispatcher.java:159) 在 com.moe.pushlibrary.MoEHelper.onNewIntent(MoEHelper.java:287) 在 com.moe.pushlibrary.MoEHelper.onStartInternal(MoEHelper.java:324) 在 com.moe.pushlibrary.MoEActivityLifeCycleCallBacks.onActivityStarted(MoEActivityLifeCycleCallBacks.java:33) 在 android.app.Application.dispatchActivityStarted(Application.java:205) 在 android.app.Activity.onStart(Activity.java:1146) 在 android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:542) 在 android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) 在 android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1237) 在 android.app.Activity.performStart(Activity.java:6253) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2379) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 在 android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-23 13:26:14.136 7406-7406/? I/Process:发送信号。 PID:7406 SIG:9
我确实尝试了 NoClassDefFoundError 的解决方案,但没有奏效。我对它在重新启动时运行感到困惑,但在从最小化状态进入前台时却没有。
以下是我的应用类:
public class AppController extends Application implements PushManager.OnTokenReceivedListener
MoEHelper helper;
@Override
public void onCreate()
super.onCreate();
helper = MoEHelper.getInstance(getApplicationContext());
helper.autoIntegrate(this);
PushManager.getInstance().setTokenObserver(this);
Log.e("TAG", "onCreate() AppController");
SharedPreferences pref = getApplicationContext().getSharedPreferences("MoTest", Context.MODE_PRIVATE);
if (pref.contains("newInstall"))
helper.setExistingUser(true);
else
helper.setExistingUser(false);
@Override
public void onTokenReceived(String token)
Log.e("TAG", "Appcontroller Token: " + token);
这是我的 MainActivity:
public class MainActivity extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
【问题讨论】:
【参考方案1】:MoEngage SDK 假定您的应用程序具有位置服务依赖关系,如果您有位置权限,这里也是如此。 话虽如此,SDK 提供了一种排除位置库的机制,以防您不想使用我们的地理围栏功能。这可以如下进行:
compile ('com.moengage:moe-android-sdk:7.7.16')
exclude group: 'com.moengage', module: 'moe-location-lib'
更多细节可以参考官方文档here。
PS:我是 MoEngage SDK 的贡献者之一。让我知道这是不是解决了。 P>
【讨论】:
【参考方案2】:检查您的 LocationHandlerImpl.java 文件并查看 GoogleApiClient 和 LocationServices 是否已解决。有可能是您没有为定位服务添加依赖项。
如果它们没有被解析,请将各自的依赖添加到您的 Gradle 文件中
'com.google.android.gms:play-services-location:XXX'
同步并再次尝试运行。那应该做的工作
【讨论】:
以上是关于重新打开应用程序时出现 Moengage 问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Android 应用中重新启动后尝试打开文件夹时出现权限错误
Microsoft Word 2007 向程序发送命令时出现问题解决方法
win10应用商店打开Minecraft for Windows10时出现就出现无法加载页面,求大神指教。