`
学不止
  • 浏览: 238552 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

android后台运行时弹出正在运行通知(类似QQ效果)

阅读更多

对于一些应用要求应用没有完全退出的情况下在后台运行时要弹出通知以方便用户进入软件。例如QQ就在退到后台的时候弹出正在运行的提示通知。

初步总结实现这种效果可以有一下三种方式:

1、可以监听onstop()方法。因为如果应用退到后台必然会执行onstop()方法,而在应用内间的跳转如果没有执行finish()的话页面通常只会执行onpause()方法,除非内存严重不足导致系统回收掉了后台页面。但由于应用内一些操作比如调用系统相机、图库等操作由于切换了程序(图库是系统程序)所以也会执行onstop()导致要加以过滤还有一些特殊操作难以把控所以实用性不强。但一般的需求是可以满足的。

2、可以监听home键和主页面(即你的activity任务栈的栈底activity也即程序的入口页面)监听back键。在监听事件中做相关的操作比如显示通知等操作。但是由于home键默认无法监听,只有页面时键盘类型的页面才能监听到home键所以必须更改页面的类型。如下:

  @Override

    public void onAttachedToWindow(){
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
       super.onAttachedToWindow();
    }

这样就会在一些页面出现问题因为这是页面的类型被更改了还有就是即使这样也不能保证所以手机和android版本都能监听到所以也有风险。常用机型可以android2.2可以监听。

3、通过启动后台服务实时监听系统进程栈的动态获取当前前台进程是否是自己应用的进程。该方式可靠但要启动服务,对于一个本没有必要启动后台服务的程序,这本来就是很纠结的事情。为了一个后台通知去开启一个服务也会让用户浮想联翩。下面是精华代码:

 activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE); 
packageName = this.getPackageName(); 
System.out.println("启动服务");
new Thread() { 
public void run() { 
try { 
while (!isStop) { 
Thread.sleep(1000); 

if (isAppOnForeground()) { 
Log.v(TAG, "前台运行");
} else { 
Log.v(TAG, "后台运行");
showNotification();
} 
} 
} catch (Exception e) { 
e.printStackTrace(); 
} 
} 
}.start(); 
 

判断是否在前台:

List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); 
if (appProcesses == null) return false; 

for (RunningAppProcessInfo appProcess : appProcesses) { 
// The name of the process that this object is associated with. 
if (appProcess.processName.equals(packageName) 
&& appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
return true; 
 藉此希望对后来者想要实现这种效果的同志们以帮助。
2
0
分享到:
评论

相关推荐

    Android 仿QQ后台运行时收到推送消息 在顶部弹出 源码

    在Android平台上,实现类似QQ后台运行时收到推送消息并在顶部弹出的效果,主要涉及到的是通知(Notification)管理和自定义头部通知(Heads-up Notification)的使用。本文将深入解析这一功能的技术实现,以及如何...

    后台弹出自定义dialog

    Android后台弹出自定义dialog 详细描述: http://blog.csdn.net/y_haiyang/article/details/9924869 ====================关注小鱼=================== 新浪微博:http://weibo.com/AwareMissing 腾讯微博:...

    Android:仿QQ 发表说说/上传照片 弹出框

    本文将详细解析如何在Android平台上实现一个类似QQ的弹出框,用于用户发表文字动态和选择图片进行上传。 首先,我们要了解Android的UI组件和布局管理。在创建弹出框时,通常会使用`DialogFragment`或者自定义`...

    Android类似于QQ账号登陆下拉框效果的实现

    `PopupWindow`是Android中的一个关键类,它用于显示一个弹出式的窗口,可以在屏幕的任意位置展示内容。在这个案例中,我们利用PopupWindow来构建下拉框的展开和收起效果。PopupWindow可以包含任何View,因此我们可以...

    Android Studio实现QQ空间布置

    本项目聚焦于使用Android Studio来实现一个类似于QQ空间的应用功能,包括界面布局、相册浏览、网页跳转、音乐播放以及好友管理等社交元素。 首先,我们要理解Android Studio的基础结构。`build.gradle`文件是项目的...

    androidQQ高仿界面

    6. **动画效果**:QQ应用中的滑动切换、消息弹出等动态效果需要通过Android的Animation API或者Transition API来实现。例如,使用ObjectAnimator、ValueAnimator或PropertyAnimator可以创建平滑的过渡动画。 7. **...

    Service通知栏提醒

    这个功能通常用于实时更新的应用,如聊天软件(如QQ、微信)或文件下载工具,它们需要在后台运行并提供即时反馈。 **Service** Service是Android四大组件之一,它是没有用户界面的后台服务。开发者可以创建Service...

    安卓仿QQ聊天+表情+加号按钮弹出功能菜单等

    - 动画效果:为了提升用户体验,可添加过渡动画,如FadeIn、Slide等,使菜单的弹出和消失更加自然。 - 功能模块集成:每个菜单项对应一个功能模块,如调用相机接口实现拍照、调用地图API实现位置分享等。 4. 其他...

    Android从后台恢复界面需要输入密码demo

    前台服务可以显示一个持久性的通知,告知用户应用正在运行,并且可以接收到系统广播。 7. **安全实践**: 实现这样的功能时,必须注意不要干扰其他应用的正常工作,遵循Android的设计原则。此外,要充分考虑用户...

    android 高仿QQ

    8. **通知系统**:为了实现类似QQ的消息推送功能,开发者需要了解和使用Android的通知系统,包括自定义通知样式和接收远程消息的能力。 9. **权限管理**:随着Android系统的演进,权限管理变得越来越重要。高仿QQ...

    Android-app.rar

    Android例子源码仿QQ的头像选择弹出的对话框 Android例子源码仿多看阅读的左右平移翻页效果小例子 Android例子源码可以通过网络请求内容的自定义列表选择Dialog Android例子源码图片旋转缩放加盖水印透明倾斜扭曲...

    android仿QQ图片编辑器.zip

    这通常通过栈数据结构实现,每次操作都入栈,撤销时弹出栈顶元素,重做时将已撤销的操作重新入栈。 5. **用户交互界面**: 应用需要有一个用户友好的界面,展示图片并提供各种绘图工具的选择。这涉及到`View`的...

    android 高仿QQ源码

    - 动画和过渡效果的实现,如消息气泡的弹出、滑动切换页面等,可以学习到如何使用Animator、Transition API以及自定义动画类。 2. **聊天功能** - 聊天界面的实现涉及到RecyclerView的使用,用于显示聊天记录列表...

    类似qq的Pop显示

    1. Pop-up窗口:Pop-up窗口,简称Pop窗,是一种在用户界面上突然弹出的小窗口。在QQ和MSN等聊天应用中,当有新的消息到来时,会以Pop-up窗口的形式提醒用户,这种设计极大地提升了用户体验,因为它能够及时吸引用户...

    深入解析Android系统中应用程序前后台切换的实现要点

    这样,即便用户切换到其他应用,只要点击通知栏的图标,就能立即回到原先的Activity,实现了类似QQ后台运行并从通知栏恢复的功能。 总结来说,Android应用程序的前台后台切换涉及Activity和Task的生命周期管理、...

    android模仿qq删除

    在Android开发中,模仿QQ删除聊天记录功能是一个常见的需求,特别是在设计社交应用时。这个功能不仅需要用户界面(UI)的设计,还要涉及到数据管理和ListView的定制。以下是对这一主题的详细阐述: 1. **自定义...

    [Android源码备份][聊天通讯]ViewPager+Fragment实现QQ界面

    在Android应用开发中,`ViewPager`和`Fragment`是构建多页面、滑动导航界面的常用组件,尤其在设计类似QQ这样的社交应用时,它们的重要性更为突出。`ViewPager`允许用户左右滑动来切换不同的页面,而`Fragment`则...

Global site tag (gtag.js) - Google Analytics