[英]crash with admob and startActivity
我在我的程序中使用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上時(不確定),因為每次崩潰時,我都可以看到adob日志,例如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
通過JNI從cocos2dx調用(這有關系嗎?) 最后我解決了!
意識到這是一個線程問題, startActivity
被稱為cocos2dx線程,我搬到startActivity
進入由主UI線程Handler
。 崩潰再也沒發生過。
所以我在onCreate
創建了一個Handler
:
private Handler handler;
protected void onCreate(Bundle savedInstanceState){
// ... blah blah
handler = new Handler();
}
然后在Runnable
調用startActivity
:
private void share() {
handler.post(new Runnable(){
@Override
public void run() {
// ... create intent
startActivity(intent);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.