android 后台服务案例,Android Service作为后台一直运行监测案例

该博客主要展示了如何在Android中创建一个服务(APPService),该服务会在后台持续运行,检查应用程序是否在前台运行。如果应用不在前台,服务会启动一个Activity(MainActivity)。这个过程涉及到ActivityManager的使用,用于获取当前运行的任务和检查包名是否匹配。此外,还涵盖了Intent的使用来启动Activity。
摘要由CSDN通过智能技术生成

packagecom.example.scangundemo_as;importandroid.app.ActivityManager;importandroid.app.Service;importandroid.content.ComponentName;importandroid.content.Context;importandroid.content.Intent;importandroid.content.pm.ApplicationInfo;importandroid.content.res.Resources;importandroid.os.IBinder;importandroid.support.annotation.Nullable;importandroid.text.TextUtils;importandroid.util.Log;importjava.util.List;importjava.util.logging.Logger;public class APPService extendsService {private static final String packageName = "com.example.scangundemo_as";private static final String className = "MainActivity";

@Overridepublic voidonCreate() {super.onCreate();

Log.i("Service","-------create-------");

}

@Overridepublic voidonDestroy() {super.onDestroy();

Log.i("Service","-------onDestroy-------");

}

@Overridepublic int onStartCommand(Intent intent, int flags, intstartId) {

Log.i("Service","-----service onStartCommand...");newThread(){

@Overridepublic voidrun() {super.run();while(true){try{

Thread.sleep(5000);

}catch(InterruptedException e) {

e.printStackTrace();

}//一直运行

boolean isRunningForeground = isRunningForeground(APPService.this);//Log.i("Service","-----service isRunningForeground="+isRunningForeground);

if(!isRunningForeground){

Log.i("Service","-----start activity-----");

startActivityTool(APPService.this);

}

}

}

}.start();return super.onStartCommand(intent, flags, startId);

}

@Nullable

@OverridepublicIBinder onBind(Intent intent) {return null;

}public static booleanisRunningForeground (Context context) {

ActivityManager am=(ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

ComponentName cn= am.getRunningTasks(1).get(0).topActivity;

String currentPackageName=cn.getPackageName();if(!TextUtils.isEmpty(currentPackageName) &&currentPackageName.equals(context.getPackageName())) {return true;

}return false;

}public static voidstartActivityTool(Context context){

Intent intent= newIntent();

intent.setClass(context, MainActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );

context.startActivity(intent);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值