问题表现:点击手机home键,游戏进入后台,接收通知后,点击通知,本应重新回到游戏,但是却黑屏了,事实上已经回到游戏,只是无法重新渲染界面,报错信息为GL error 591。
代码实现:
Class<?> mainClass = OnePiece2dx.class; //rename main activity class here
try {
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setWhen(System.currentTimeMillis())
.setContentText(message)
.setContentTitle(title)
.setAutoCancel(true)
.setTicker(title)
.setNumber(10)
.setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, mainClass);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
resultIntent.putExtra("title", title);
resultIntent.putExtra("message", message);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(mainClass);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(1, mBuilder.build());
} catch (Exception e) {
e.printStackTrace();
}
**其它信息:**主Class所在的activity不是launcher,其launchMode为SingleTask。
另外,mainClass如果不是继承的Cocos2dxActivity而是继承的Activity,那么这套代码是没有问题的。可以重新进入游戏,没有问题。