与admob和startActivity崩溃

时间:2013-09-14 17:08:33

标签: java android android-intent admob

我在程序中使用intent来分享图片和文字。

在添加AdMob横幅之前,一切正常。该程序转到startActivity时崩溃。它不会每次都发生,但比例约为30%。

以下是启动外部意图的代码。

private void _share(String text) {
    Log.w("A", "share");
    Intent intent=new Intent(android.content.Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);

    File file = new File("/sdcard/dodgegame.jpg");
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    intent.putExtra(Intent.EXTRA_TEXT, text);
    startActivity(Intent.createChooser(intent, "How do you want to share?"));
}

AdMob本身运作良好。广告正确显示。似乎所有的崩溃都发生在startActivity和新广告同时出现在AdMob上时(不确定),因为每次崩溃时,我都会看到像Ads onReceiveAd()

这样的admob日志

这是崩溃时的日志:

09-15 00:23:23.540: I/Choreographer(18986): Skipped 30 frames!  The application may be doing too much work on its main thread.
09-15 00:23:33.451: I/Ads(19125): onReceiveAd()
09-15 00:23:34.232: W/A(19125): share
09-15 00:23:34.272: W/crash_handler(19125): Caught a crash, signum=11
09-15 00:23:34.272: E/webcore(19125): Report WebCore crash to the ErrorReportUtils at:Sun Sep 15 00:23:34 格林尼治标准时间+0800 2013

有没有人经历过?

在添加AdMob之前,意图运作良好,所以我认为这可能是AdMob的错误。如果是这样,我将不得不找到暂时禁用AdMob的方法。

其他信息:

  1. AdMob JAR:GoogleAdMobAdsSdk-6.4.1.jar
  2. Android sdk:mac-x86_64-20130729 / android-18
  3. 通过JNI从cocos2dx调用函数_share(这有关系吗?)

1 个答案:

答案 0 :(得分:2)

最后我解决了!

意识到这是一个线程问题,在{cocos2dx线程中调用了startActivity,我通过startActivityHandler移动到主UI线程中。并且崩溃再也没有发生过。

所以我在Handler中创建了onCreate

private Handler handler;
protected void onCreate(Bundle savedInstanceState){
    // ... blah blah
    handler = new Handler();
}

然后在startActivity

中致电Runnable
private void share() {
    handler.post(new Runnable(){
    @Override
    public void run() {
        // ... create intent
        startActivity(intent);
    }
}