当前位置: 首页 > news >正文

浦东建设网站花店网站模板免费下载

浦东建设网站,花店网站模板免费下载,企业公司网站,南京建站推广公司在工作中#xff0c;对于系统开发确实有些难度#xff0c;特别是在开机阶段遇到的问题#xff0c;比如开机动画播放完毕进入锁屏界面黑屏几秒然后进入 锁屏界面#xff0c;这就需要根据开机日志来分析问题所在#xff0c;在工作中遇到的几种黑屏情况做下记录首次开机进入L…在工作中对于系统开发确实有些难度特别是在开机阶段遇到的问题比如开机动画播放完毕进入锁屏界面黑屏几秒然后进入 锁屏界面这就需要根据开机日志来分析问题所在在工作中遇到的几种黑屏情况做下记录首次开机进入Launcher3前黑屏几秒的几种情况问题的总结2.1 开机向导引起的进入Launcher桌面短暂黑屏 在系统中默认是有开机向导的首次开机会首选进入开机向导然后进入锁屏桌面如果某些原因 引起开机向导卡顿会造成短暂黑屏然后进入Launcher界面 去掉开机向导的相关修改为: frameworks/base/packages/SettingsProvider/res/values/defaults.xml !--本文的关键属性默认是否开启跳过开机向导-- bool namedef_user_setup_completefalse/bool !--设备是否已经提供开机首次是否进入锁屏界面 -- bool namedef_device_provisionedfalse/bool 可以修改如下 frameworks/base/packages/SettingsProvider/res/values/defaults.xml bool namedef_user_setup_completetrue/bool bool namedef_device_provisionedtrue/bool 再在产品mk中去掉这两个app: packages/apps/OneTimeInitializer packages/apps/Provision 在build的handheld_product.mk中参与编译这两个apk $(call inherit-product, $(SRC_TARGET_DIR)/product/media_product.mk)# /product packages PRODUCT_PACKAGES \Camera2 \DeskClock \LatinIME \Launcher3QuickStep \OneTimeInitializer \Provision \Music \Settings \SettingsIntelligence \StorageManager \SystemUI \WallpaperCropper \frameworks-base-overlaysPRODUCT_PACKAGES_DEBUG \frameworks-base-overlays-debug修改如下 build\make\target\product\handheld_product.mk $(call inherit-product, $(SRC_TARGET_DIR)/product/media_product.mk)# /product packages PRODUCT_PACKAGES \Camera2 \DeskClock \LatinIME \Launcher3QuickStep \ - OneTimeInitializer \ - Provision \Music \Settings \SettingsIntelligence \StorageManager \SystemUI \WallpaperCropper \frameworks-base-overlaysPRODUCT_PACKAGES_DEBUG \frameworks-base-overlays-debug 让系统直接启动桌面不用启动Provision。Provision干的事情和SetupWizard、 OneTimeInitializer类似。都是设置DEVICE_PROVISIONED和USER_SETUP_COMPLETE。2.2 开机动画引起的进入launcher前的黑屏情况 在系统进入首次开机的时候由于需要加载相当多的系统数据和服务首次开机耗时会长一点如果 开机动画过少在播放完开机动画以后还没等到AMS执行完停止播放动画的相关通知就会陷入 黑屏状态等得到AMS停止播放动画以后就会进入桌面 frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.javafinal void finishBooting() {Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, FinishBooting);synchronized (this) {if (!mBootAnimationComplete) {mCallFinishBooting true;return;}mCallFinishBooting false;}ArraySetString completedIsas new ArraySetString();for (String abi : Build.SUPPORTED_ABIS) {ZYGOTE_PROCESS.establishZygoteConnectionForAbi(abi);final String instructionSet VMRuntime.getInstructionSet(abi);if (!completedIsas.contains(instructionSet)) {try {mInstaller.markBootComplete(VMRuntime.getInstructionSet(abi));} catch (InstallerException e) {if (!VMRuntime.didPruneDalvikCache()) {// This is technically not the right filter, as different zygotes may// have made different pruning decisions. But the log is best effort,// anyways.Slog.w(TAG, Unable to mark boot complete for abi: abi ( e.getMessage() ));}}completedIsas.add(instructionSet);}}IntentFilter pkgFilter new IntentFilter();pkgFilter.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART);pkgFilter.addDataScheme(package);mContext.registerReceiver(new BroadcastReceiver() {Overridepublic void onReceive(Context context, Intent intent) {String[] pkgs intent.getStringArrayExtra(Intent.EXTRA_PACKAGES);if (pkgs ! null) {for (String pkg : pkgs) {synchronized (ActivityManagerService.this) {if (forceStopPackageLocked(pkg, -1, false, false, false, false, false,0, query restart)) {setResultCode(Activity.RESULT_OK);return;}}}}}}, pkgFilter);IntentFilter dumpheapFilter new IntentFilter();dumpheapFilter.addAction(DumpHeapActivity.ACTION_DELETE_DUMPHEAP);mContext.registerReceiver(new BroadcastReceiver() {Overridepublic void onReceive(Context context, Intent intent) {final long delay intent.getBooleanExtra(DumpHeapActivity.EXTRA_DELAY_DELETE, false) ? 5 * 60 * 1000 : 0;mHandler.sendEmptyMessageDelayed(DELETE_DUMPHEAP_MSG, delay);}}, dumpheapFilter);// Inform checkpointing systems of successtry {// This line is needed to CTS test for the correct exception handling// See b/138952436#comment36 for contextSlog.i(TAG, About to commit checkpoint);IStorageManager storageManager PackageHelper.getStorageManager();storageManager.commitChanges();} catch (Exception e) {PowerManager pm (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);pm.reboot(Checkpoint commit failed);}// Let system services know.mSystemServiceManager.startBootPhase(SystemService.PHASE_BOOT_COMPLETED);synchronized (this) {// Ensure that any processes we had put on hold are now started// up.final int NP mProcessesOnHold.size();if (NP 0) {ArrayListProcessRecord procs new ArrayListProcessRecord(mProcessesOnHold);for (int ip0; ipNP; ip) {if (DEBUG_PROCESSES) Slog.v(TAG_PROCESSES, Starting process on hold: procs.get(ip));mProcessList.startProcessLocked(procs.get(ip), new HostingRecord(on-hold));}}if (mFactoryTest FactoryTest.FACTORY_TEST_LOW_LEVEL) {return;}// Start looking for apps that are abusing wake locks.Message nmsg mHandler.obtainMessage(CHECK_EXCESSIVE_POWER_USE_MSG);mHandler.sendMessageDelayed(nmsg, mConstants.POWER_CHECK_INTERVAL);// Tell anyone interested that we are done booting!SystemProperties.set(sys.boot_completed, 1);// And trigger dev.bootcomplete if we are not showing encryption progressif (!trigger_restart_min_framework.equals(VoldProperties.decrypt().orElse())|| .equals(VoldProperties.encrypt_progress().orElse())) {SystemProperties.set(dev.bootcomplete, 1);}//发送有序的开机广播ACTION_LOCKED_BOOT_COMPLETEDmUserController.sendBootCompleted(new IIntentReceiver.Stub() {Overridepublic void performReceive(Intent intent, int resultCode,String data, Bundle extras, boolean ordered,boolean sticky, int sendingUser) {synchronized (ActivityManagerService.this) {mOomAdjuster.mAppCompact.compactAllSystem();requestPssAllProcsLocked(SystemClock.uptimeMillis(), true, false);}}});mUserController.scheduleStartProfiles();}Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);}在SurfaceFlinger.bootFinished中停止动画相关方法 frameworks/native/services/surfaceflinger/SurfaceFlinger.cpp void SurfaceFlinger::bootFinished(){if (mBootFinished true) {ALOGE(Extra call to bootFinished);return;}mBootFinished true;if (mStartPropertySetThread-join() ! NO_ERROR) {ALOGE(Join StartPropertySetThread failed!);}const nsecs_t now systemTime();const nsecs_t duration now - mBootTime;ALOGI(Boot is finished (%ld ms), long(ns2ms(duration)) );mFrameTracer-initialize();mTimeStats-onBootFinished();// wait patiently for the window manager deathconst String16 name(window);mWindowManager defaultServiceManager()-getService(name);if (mWindowManager ! 0) {mWindowManager-linkToDeath(static_castIBinder::DeathRecipient*(this));}spIBinder input(defaultServiceManager()-getService(String16(inputflinger)));if (input nullptr) {ALOGE(Failed to link to input service);} else {mInputFlinger interface_castIInputFlinger(input);}if (mVrFlinger) {mVrFlinger-OnBootFinished();}// stop boot animation// formerly we would just kill the process, but we now ask it to exit so it// can choose where to stop the animation.property_set(service.bootanim.exit, 1);const int LOGTAG_SF_STOP_BOOTANIM 60110;LOG_EVENT_LONG(LOGTAG_SF_STOP_BOOTANIM,ns2ms(systemTime(SYSTEM_TIME_MONOTONIC)));static_castvoid(schedule([this] {readPersistentProperties();mPowerAdvisor.onBootFinished();mBootStage BootStage::FINISHED;if (property_get_bool(sf.debug.show_refresh_rate_overlay, false)) {enableRefreshRateOverlay(true);}}));} 在BootAnimation.cpp退出动画的相关方法 frameworks/base/cmds/bootanimation/BootAnimation.cppvoid BootAnimation::checkExit() {// Allow surface flinger to gracefully request shutdownchar value[PROPERTY_VALUE_MAX];property_get(EXIT_PROP_NAME, value, 0);int exitnow atoi(value);if (exitnow) {requestExit();mCallbacks-shutdown();}}在项目中遇到开机动画只有几张的项目 在首次开机的时候会出现黑屏 把开机动画增加到30张左右的就解决了这个问题2.3 FallbackHome导致的黑屏问题 在无锁屏的情况下 会在开机动画播放完毕后进入系统设置的FallbackHome等收到解锁通知后 然后进入默认桌面这时可以在onCreate设置开机动画最后一张作为背景 public class FallbackHome extends Activity {private static final String TAG FallbackHome;private static final int PROGRESS_TIMEOUT 2000;private boolean mProvisioned;private WallpaperManager mWallManager;private final Runnable mProgressTimeoutRunnable () - {View v getLayoutInflater().inflate(R.layout.fallback_home_finishing_boot, null /* root */);setContentView(v);v.setAlpha(0f);v.animate().alpha(1f).setDuration(500).setInterpolator(AnimationUtils.loadInterpolator(this, android.R.interpolator.fast_out_slow_in)).start();getWindow().addFlags(LayoutParams.FLAG_KEEP_SCREEN_ON);};private final OnColorsChangedListener mColorsChangedListener new OnColorsChangedListener() {Overridepublic void onColorsChanged(WallpaperColors colors, int which) {if (colors ! null) {final View decorView getWindow().getDecorView();decorView.setSystemUiVisibility(updateVisibilityFlagsFromColors(colors, decorView.getSystemUiVisibility()));mWallManager.removeOnColorsChangedListener(this);}}};Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// Set ourselves totally black before the device is provisioned so that// we dont flash the wallpaper before SUWmProvisioned Settings.Global.getInt(getContentResolver(),Settings.Global.DEVICE_PROVISIONED, 0) ! 0;final int flags;if (!mProvisioned) {setTheme(R.style.FallbackHome_SetupWizard);flags View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;} else {flags View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;}mWallManager getSystemService(WallpaperManager.class);if (mWallManager null) {Log.w(TAG, Wallpaper manager isnt ready, cant listen to color changes!);} else {loadWallpaperColors(flags);}getWindow().getDecorView().setSystemUiVisibility(flags);// 增加背景getWindow().setBackgroundDrawableResource(R.drawable.background);registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_USER_UNLOCKED));maybeFinish();}Overrideprotected void onResume() {super.onResume();if (mProvisioned) {mHandler.postDelayed(mProgressTimeoutRunnable, PROGRESS_TIMEOUT);}} } 第二种改法 FrameLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent- android:background#80000000 android:backgrounddrawable/bgandroid:forceHasOverlappingRenderingfalseLinearLayoutandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:orientationverticalandroid:layout_gravitycenterandroid:layout_marginStart16dpandroid:layout_marginEnd16dpTextViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textSize20spandroid:textColor?android:attr/textColorPrimaryandroid:text*android:string/android_start_title/ProgressBarstyleandroid:style/Widget.Material.ProgressBar.Horizontalandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginTop12.75dpandroid:colorControlActivated?android:attr/textColorPrimaryandroid:indeterminatetrue//LinearLayout /FrameLayout总结这三种情况目前是开发中遇到常见的情况具体情况可以根据开机日子分析来解决相关的问题
http://www.dnsts.com.cn/news/82102.html

相关文章:

  • 大连专业模板网站制作网站挂载
  • 济南网站建设哪里便宜wordpress图片批量设置
  • 网站做短链统计优缺点京东网站建设缺点
  • 网站建设需求计划书怎样讲卖灯的网站做的好处
  • 百度wap网站建设网站建设怎样设置动态背景
  • 东莞樟木头做网站哪家好一年的百度指数
  • 织梦响应式网站模板公司管理系统下载
  • 空气炸锅做糕点的网站好看的主页背景图片
  • 免费网站空间怎么动漫制作
  • 网站后台忘了网站策划教程
  • 企业网站设计的基本内容包括哪些网站WordPress站点
  • wordpress 页面特效南阳网站优化公司
  • 沈阳网站建设本地化技术服务seo沈阳
  • 长沙建设银行招聘网站微网站用什么软件做
  • 如何加快网站收录网站开发行业前景
  • 钦州市建设网站做机械比较好的外贸网站
  • 网站建设策划书编制广州网站建设星珀
  • 汕头建站服务外包app开发定制
  • 福建省两学一做网站公司网站公司简介
  • 营销型网站建设需要注意什么it外包合同
  • 湛江网站建设方案书linux 做网站用哪个版本
  • 北京企业网站建设多少钱天猫购物商城官网
  • 江苏省住房和建设厅网站首页专业建站报价
  • 滁州建设网站营销型网站策划 ppt
  • 做网站得做多少网页电子商务 网站设计
  • 怎么样评价网站做的好坏网站建设 昆明
  • 百度优化网站建设湛江网站建设托管
  • 湖北网站建设怎样wordpress默认登录地址修改
  • 番禺做网站最便宜的哪家公司纷享销客crm管理系统
  • 天津做网站选津坤科技华为企业网站规划建设方案