做门户网站主要技术哪一块Wordpress漂亮免费主题

张小明 2026/1/19 19:17:49
做门户网站主要技术哪一块,Wordpress漂亮免费主题,建设网站的内容及实现方式,wordpress侧边栏主题1.前言 在进行14.0的系统定制开发中#xff0c;在某些app的定制过程中#xff0c;需要知道某个app的启动时候然后获取 应用使用时长的功能#xff0c;所以就需要监听某个app的启动后就获取使用时长#xff0c;需要在Activity的生命周期中来实现监听功能 2.frameworks监听…1.前言在进行14.0的系统定制开发中在某些app的定制过程中需要知道某个app的启动时候然后获取 应用使用时长的功能所以就需要监听某个app的启动后就获取使用时长需要在Activity的生命周期中来实现监听功能2.frameworks监听某个app启动获取应用使用时长功能实现的核心类frameworks\base\core\java\android\app\Activity.java3.frameworks监听某个app启动获取应用使用时长功能实现的核心功能分析和实现Android Activity生命周期是Android开发中非常重要的概念它描述了一个Activity从创建到销毁的整个过程。Activity生命周期由一系列回调方法组成开发者可以在这些方法中执行相应的操作。1. Activity生命周期的状态Activity在其生命周期中会经历以下几种状态运行RunningActivity位于屏幕前台用户可以与它交互。暂停PausedActivity部分被遮挡不再处于前台但仍然可见例如有一个透明或非全屏的Activity覆盖在上面。此时Activity不再接收用户输入。停止StoppedActivity完全被遮挡不可见。它仍然保留所有状态和成员信息但可能被系统销毁。销毁DestroyedActivity被系统销毁或从内存中移除。2. 生命周期回调方法Activity类提供了以下核心生命周期方法onCreate()调用时机Activity首次创建时调用。作用进行一次性初始化如加载布局、绑定数据等。后续状态onStart()onStart()调用时机Activity即将变为可见时调用进入前台。作用准备Activity进入前台但尚未与用户交互。后续状态onResume()如果Activity进入前台或onStop()如果Activity被隐藏onResume()调用时机Activity开始与用户交互之前调用。此时Activity位于Activity栈的顶部。作用启动动画、初始化相机等需要与用户交互的组件。后续状态onPause()onPause()调用时机当Activity即将进入暂停状态时调用例如有另一个非全屏Activity覆盖。作用提交未保存的更改、释放系统资源、停止动画等。注意此方法应快速执行否则会影响新Activity的显示。后续状态onResume()如果Activity重新回到前台或onStop()如果Activity完全不可见onStop()调用时机Activity完全不可见时调用。作用释放不再需要的资源保存数据。后续状态onRestart()如果Activity重新显示或onDestroy()如果Activity被销毁onRestart()调用时机Activity从停止状态重新显示时调用在onStart()之前。作用重新初始化在onStop()中释放的资源。后续状态onStart()onDestroy()调用时机Activity被销毁之前调用。这可能是因为Activity结束调用finish()或系统为节省空间而临时销毁该Activity。作用释放所有资源包括线程、数据库连接等。3. 生命周期图示为了更好地理解以下是一个经典的生命周期图示描述性启动ActivityonCreate() - onStart() - onResume()另一个Activity覆盖当前Activity非全屏onPause() - 如果完全覆盖onStop()返回原ActivityonRestart() - onStart() - onResume()回退或结束当前ActivityonPause() - onStop() - onDestroy()注意当系统资源不足时可能会杀死后台的Activity。此时当用户返回时Activity会重新创建。4. 保存和恢复状态由于Activity可能被系统销毁因此需要保存状态以便恢复。onSaveInstanceState()在Activity可能被销毁之前调用例如屏幕旋转、系统资源回收。可以将临时数据保存到Bundle中。onRestoreInstanceState()在onStart()之后、onResume()之前调用用于恢复保存的状态。也可以选择在onCreate()中恢复。5. 实际开发中的注意事项避免在onPause()和onStop()中执行耗时操作否则会影响新Activity的响应。在onResume()中重新获取资源如相机在onPause()中释放。使用onSaveInstanceState()保存临时UI状态使用onCreate()或onRestoreInstanceState()恢复。了解配置变更如屏幕旋转会销毁并重建Activity因此需要妥善处理状态保存。3.1 Activity.java中相关源码分析 ‌Activity在‌Android应用程序中扮演着核心角色主要负责展示用户界面、处理用户输入、管理生命周期以及与其他组件进行交互。 展示用户界面 Activity是用户可以看到的一个屏幕它负责显示应用程序的用户界面包括布局、按钮、文本框等元素。 用户可以通过与这些界面的交互来完成各种操作。MainThread CallSuper protected void onCreate(Nullable Bundle savedInstanceState) { if (DEBUG_LIFECYCLE) Slog.v(TAG, onCreate this : savedInstanceState); if (mLastNonConfigurationInstances ! null) { mFragments.restoreLoaderNonConfig(mLastNonConfigurationInstances.loaders); } if (mActivityInfo.parentActivityName ! null) { if (mActionBar null) { mEnableDefaultActionBarUp true; } else { mActionBar.setDefaultDisplayHomeAsUpEnabled(true); } } .... mRestoredFromBundle savedInstanceState ! null; mCalled true; } public void onCreate(Nullable Bundle savedInstanceState, Nullable PersistableBundle persistentState) { onCreate(savedInstanceState); } CallSuper protected void onResume() { if (DEBUG_LIFECYCLE) Slog.v(TAG, onResume this); dispatchActivityResumed(); mActivityTransitionState.onResume(this); enableAutofillCompatibilityIfNeeded(); if (mAutoFillResetNeeded) { if (!mAutoFillIgnoreFirstResumePause) { View focus getCurrentFocus(); if (focus ! null focus.canNotifyAutofillEnterExitEvent()) { // TODO(b/148815880): Bring up keyboard if resumed from inline authentication. // TODO: in Activity killed/recreated case, i.e. SessionLifecycleTest# // testDatasetVisibleWhileAutofilledAppIsLifecycled: the Views initial // window visibility after recreation is INVISIBLE in onResume() and next frame // ViewRootImpl.performTraversals() changes window visibility to VISIBLE. // So we cannot call View.notifyEnterOrExited() which will do nothing // when View.isVisibleToUser() is false. getAutofillManager().notifyViewEntered(focus); } } } notifyContentCaptureManagerIfNeeded(CONTENT_CAPTURE_RESUME); mCalled true; } //add core start public boolean isAppRunningState(Nullable String appPackageName){ ActivityManager activities (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); ListActivityManager.RunningAppProcessInfo appProcesses activities.getRunningAppProcesses(); if (appProcesses null) { return false; } for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { Log.e(Activity_Main,appProcess.processName appProcess.processName); if (appProcess.processName.equals(appPackageName)) { return true; } } return false; } private String getappusedtimes(Nullable String appPackageName){ String usedtimes ; UsageStatsManager usageStatsManager (UsageStatsManager) getSystemService(Context.USAGE_STATS_SERVICE); try { Calendar calendar Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); ListUsageStats stats usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, calendar.getTimeInMillis(), System.currentTimeMillis()); for(int i0;istats.size();i){ final android.app.usage.UsageStats pkgStats stats.get(i); String package_namepkgStats.getPackageName(); long time_begin pkgStats.getFirstTimeStamp(); long time_endpkgStats.getLastTimeStamp(); long time_usedpkgStats.getLastTimeUsed(); long time_totalspkgStats.getTotalTimeInForeground(); if(time_total0package_name.equals(appPackageName)) { Log.e(AppInfoDashboardFragment,package_name:package_name--time_begin:time_begin--time_used:time_used--time_total:time_total); return time_totals/1000s; } } } catch (Exception e) { e.printStackTrace(); } return usedtimes; } //add core end CallSuper protected void onPostResume() { //add core start boolean isRunning isAppRunningState(com.tel.troops); android.util.Log.e(Activity_Main,com.tel.troops is runisRunning); if(isRunning){ String run_time getappusedtimes(com.tel.troops); android.util.Log.e(Activity_Main,com.tel.troops is run_time run_time); } //add core end final Window win getWindow(); if (win ! null) win.makeActive(); if (mActionBar ! null) mActionBar.setShowHideAnimationEnabled(true); mCalled true; }在上述的Activity.java的相关源码中在onCreate(Nullable Bundle savedInstanceState) 中 的相关源码中主要是初始化布局等功能而在onPostResume()表示页面已经加载完毕后 调用的相关方法所以就可以在onPostResume()中来调用 isAppRunningState(com.tel.troops) 来利用ActivityManager.RunningAppProcessInfo当前置顶运行的进行是否是需要监听的app包名 如果返回true就可以监听到app已经启动了,这时候就可以调用getappusedtimes(com.tel.troops); 来获取需要监听app的运行时间了这样就可以监听app启动的时候来获取这个app的运行时间了 从而来实现了相关的功能
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站底部的备案信息青岛无间设计公司网站

EmotiVoice:让语音更像“人”,也更像“你” 在虚拟助手机械地念出天气预报、有声书用千篇一律的语调讲述动人故事的时代,我们早已习惯了语音合成中的“无感”输出。然而,当情感缺失成为人机沟通的最大障碍之一,真正的突…

张小明 2026/1/17 20:56:38 网站建设

做一个网站的流程句容建设网站

Go语言并发编程中的同步机制与资源管理 在Go语言的并发编程中,同步和资源管理是至关重要的部分。下面将详细介绍Go语言中多种并发相关的技术和工具。 1. 同步Goroutine 在等待Goroutine完成时,我们可以使用空结构体的通道来实现,示例代码如下: ch := make(chan struct…

张小明 2026/1/17 20:56:38 网站建设

奉贤区做网站建设信用卡官方网站

LangFlow中的冷启动推荐策略:新物品曝光解决方案 在电商平台或内容平台上,每当一款新产品上架时,它面临的第一个难题往往不是“好不好”,而是“有没有人看到”。没有点击、没有交互、没有反馈——这就是典型的新物品冷启动问题。传…

张小明 2026/1/17 20:56:39 网站建设

南阳网站开发公司注册新公司流程

嵌入式应用开发:GTK+与Qt应用构建指南 在嵌入式系统的开发过程中,应用程序的开发是至关重要的一环。本文将详细介绍如何使用Eclipse IDE构建、运行和调试图形化的GTK+应用程序,以及如何使用Qt Creator IDE进行Qt应用程序的开发。 远程调试配置 在对远程目标进行调试之前,…

张小明 2026/1/17 20:56:39 网站建设

专业的郑州网站推广永久免费的视频素材软件推荐

想要在代谢组学、蛋白质组学研究中获得准确可靠的分析结果吗?MZmine 3作为一款完全免费的质谱数据分析工具,为科研人员提供了从原始数据到生物学洞察的全套解决方案。无论你是初学者还是经验丰富的分析师,这份完整指南都将帮助你快速掌握核心…

张小明 2026/1/17 20:56:41 网站建设

网站维护与建设合同书吉林百度seo公司

任务书任务及要求:1.设计 (研究) 内容和要求设计开发学校机房上机排课管理系统,采用Java语言作为主要开发语言,结合JSP技术构建Web界面,使用MySQL数据库存储系统数据。该系统通过MVC(Model-View-Controller&#xff09…

张小明 2026/1/17 5:17:27 网站建设