我在程序中使用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()
这是崩溃时的日志:
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的方法。
其他信息:
_share
(这有关系吗?)答案 0 :(得分:2)
最后我解决了!
意识到这是一个线程问题,在{cocos2dx线程中调用了startActivity
,我通过startActivity
将Handler
移动到主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);
}
}