【Android App退出检测】一卷旌收千骑虏,万全身出百重围。这篇文章主要讲述Android App退出检测相关的知识,希望能为你提供帮助。
app的退出检测是很难的,但是获取app“
要退出”
的状态就容易多了,退出的瞬间并不是真的退出了,ActivityManager要销毁activity,也需要一些时间和资源的。
先见下面的运行效果:
文章图片
gif做的比价粗啊,
两个activity的界面就不介绍了,主要是在APP启动的时候开启一个服务,application代码如下:
public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Intent intent=new Intent(this,CheckExitService.class); getApplicationContext().startService(intent); } }
service的代码如下:
public class CheckExitService extends Service {private String packageName = "test.minwenping.com.appexitdemo"; @Nullable @Override public IBinder onBind(Intent intent) { return null; }@Override public void onTaskRemoved(Intent rootIntent) { super.onTaskRemoved(rootIntent); Toast.makeText(CheckExitService.this, "App要退出了", Toast.LENGTH_SHORT).show(); }//service异常停止的回调 @Override public int onStartCommand(Intent intent, int flags, int startId) { ActivityManager activtyManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List< ActivityManager.RunningAppProcessInfo> runningAppProcesses = activtyManager.getRunningAppProcesses(); for (int i = 0; i < runningAppProcesses.size(); i++) { if (packageName.equals(runningAppProcesses.get(i).processName)) { Toast.makeText(this, "app还在运行中", Toast.LENGTH_LONG).show(); } } return START_NOT_STICKY; }@Override public void onCreate() { super.onCreate(); Toast.makeText(CheckExitService.this, "App检测服务开启了", Toast.LENGTH_SHORT).show(); } }
还有尝试了守护线程,UI就只有一个线程,想从这方面下手,但是都失败了
推荐阅读
- Jboss启动报错——DailyRollingFileAppender无法转换异常
- 解决安卓手机键盘弹出时会把背景或百分比定位的布局压缩的问题
- androidActivity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化
- android——使用Ijkplayer打造自己的超级电视台播放软件
- 谈谈-Android中的接口回调技术
- 设置UWP程序自启动(Automate launching Windows 10 UWP apps)
- 修改Android Studio默认的API Level(SDK版本)
- 微信公众号关联小程序AppID是什么
- Android-------ListView列表中获取EditText输入的值