我在Android上玩游戏。我正在使用gcm推送通知,基本上我正在使用推送检查他们的内容,以便知道推送是否有赢家或输家值,如果有赢取值并且用户在屏幕上“等待结果”应用程序转到其他活动屏幕(等待或失败屏幕取决于推送值)。 架构是:
如果用户在等待屏幕上并且推送到推送屏幕值。
所有工作完全在Android 4.2.x上工作,但在4.1.x和最早(我支持的最后一个版本是2.3.6)在推送到来并且设备处于睡眠模式时不起作用,在这种情况下(api <16 ,推出来,设备处于睡眠模式)应用程序关闭,而不是只关闭错误,我需要再次启动它。为了解决这个问题,我已经编写了以下几行并强制应用程序正常工作,并且运行良好,但现在的问题是屏幕始终打开,永远不会进入睡眠模式,并且,您可以想象,如果你没有玩那个人,那么电池就会死得很快。 我的新实现问题的架构是:
当android版本&lt; 4.1.x和屏幕处于睡眠模式时。推送来,屏幕打开(始终)等待用户屏幕解锁。
我的问题是: 你有什么想法为什么应用程序关闭api&lt; 16? 你有另一个实现的想法吗?
在推送通知具有获胜值的情况下,GcmIntentService内部的此函数扩展了IntentService类的运行
if(win){
DataStore.userRefereeWin=true;
if (currentUserSituation().contains("Waiting") && (android.os.Build.VERSION.SDK_INT < 16)){
PowerManager pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
}
sound = Uri.parse("android.resource://" + getPackageName() + "/" + whatWinSound());
Intent recentAppIntent = new Intent(GcmIntentService.this, Win.class);
recentAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
contentIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
}
感谢avenced