深圳企业网站制作制作,怎样建设相亲网站,官方网站建设需求规格说明书,网站做支付功能背景Android8.0马上就要发布#xff0c;Google对于安卓市场上各种应用占据内存空间的问题不断进行内存完善#xff0c;我们的应用进程很难再保持不死之身#xff0c;以前的服务唤醒在5.0已经失效#xff0c;现在我们尽可能的做到保活方式就是提高进程的优先级#xff0c;本…背景Android8.0马上就要发布Google对于安卓市场上各种应用占据内存空间的问题不断进行内存完善我们的应用进程很难再保持不死之身以前的服务唤醒在5.0已经失效现在我们尽可能的做到保活方式就是提高进程的优先级本文介绍一种1像素Activity保活进程的实现据说QQ也在用。其整个逻辑就是在手机屏幕黑屏时我们启动一个1像素的Activity其占用内存很小毕竟只有1像素嘛无形中减小了内存的回收几率在屏幕亮的时候就关闭该页面。实现步骤1、首先需要在MainActivity中注册一个监听手机屏幕状态的广播监听//注册监听屏幕的广播mOnepxReceiver new OnePixelReceiver();
IntentFilter intentFilter new IntentFilter();
intentFilter.addAction(android.intent.action.SCREEN_OFF);
intentFilter.addAction(android.intent.action.SCREEN_ON);
intentFilter.addAction(android.intent.action.USER_PRESENT);
registerReceiver(mOnepxReceiver, intentFilter);
2、监听到屏幕状态后的处理/*** Created by Administrator on 2017/7/10.* 监听屏幕状态的广播*/
public class OnePixelReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { //屏幕关闭启动1像素ActivityIntent it new Intent(context, OnePiexlActivity.class);it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(it);} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { //屏幕打开 结束1像素context.sendBroadcast(new Intent(finish));Intent main new Intent(Intent.ACTION_MAIN);main.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);main.addCategory(Intent.CATEGORY_HOME);context.startActivity(main);}}
}
3、创建我们的1像素的Activity:/*** Created by Administrator on 2017/7/10.*/
public class OnePiexlActivity extends Activity {private BroadcastReceiver endReceiver;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置1像素Window window getWindow();window.setGravity(Gravity.LEFT | Gravity.TOP);WindowManager.LayoutParams params window.getAttributes();params.x 0;params.y 0;params.height 1;params.width 1;window.setAttributes(params);//结束该页面的广播endReceiver new BroadcastReceiver() {Overridepublic void onReceive(Context context, Intent intent) {finish();}};registerReceiver(endReceiver, new IntentFilter(finish));//检查屏幕状态checkScreen();}Overrideprotected void onResume() {super.onResume();checkScreen();}/*** 检查屏幕状态 isScreenOn为true 屏幕“亮”结束该Activity */private void checkScreen() {PowerManager pm (PowerManager) OnePiexlActivity.this.getSystemService(Context.POWER_SERVICE);boolean isScreenOn pm.isScreenOn();if (isScreenOn) {finish();}}
}
4、我们还需要设置1像素activity为透明不然可能会影响体验但是影响不大1像素毕竟是挑战视力的存在。 style nameOnePixelActivity parentandroid:Theme.Holo.Light.NoActionBar//无标题item nameandroid:windowIsTranslucenttrue/item//透明/style
5、AndroidManifest配置activityandroid:name.OnePiexlActivityandroid:screenOrientationportraitandroid:themestyle/OnePixelActivity/
总结以上为1像素保活进程的基本实现,另外保活进程还可以通过启动前台service和提升service优先级来实现。作者将行陌路链接https://www.jianshu.com/p/ef4a9531bc15來源简书著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。