如何去管理正在运行的程序和服务
首发地址:http://www.eoeandroid.com/thread-201709-1-1.html
看到几个不错的源码:
植物大战僵尸,又见植物大战僵尸!(分享)
http://www.eoeandroid.com/thread-211063-1-1.html
Android 3D 乡村赛车 完整代码
http://www.eoeandroid.com/thread-211471-1-1.html
发现自己之前练习写过一个Demo,RUN了下感觉还是挺实用的,所以就发上来给大家看看。
权限(这个不要忘记哦!)
<uses-permission android:name="android.permission.GET_TASKS"/> <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
主界面
package irdc.ex10_10; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; public class EX10_10 extends Activity { private Button Button01; private Button Button02; private ActivityManager mActivityManager; private ArrayList<String> arylistTask; private ArrayList<String> arylistTaskPackageName; private ArrayList<String> arylistService; private ArrayList<String> arylistServicePackageName; private int intGetTaskCounter = 30; public List<ActivityManager.RunningTaskInfo> mRunningTasks; public List<RunningServiceInfo> mRunningTaskServices; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button01 = (Button) findViewById(R.id.Button01); Button02 = (Button) findViewById(R.id.Button02); /* 取得ActivityManager */ mActivityManager = (ActivityManager) EX10_10.this .getSystemService(ACTIVITY_SERVICE); Button01.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub arylistTask = new ArrayList<String>(); arylistTaskPackageName = new ArrayList<String>(); /* 用ActivityManager取得正在运行的硬用程序 */ mRunningTasks = mActivityManager.getRunningTasks(intGetTaskCounter); int i = 1; /* 以循环及baseActivity方式取得名称与ID并放入ArrayList */ for (ActivityManager.RunningTaskInfo amTask : mRunningTasks) { arylistTask.add("" + (i++) + ": " + amTask.baseActivity.getClassName() + "(ID=" + amTask.id + ")"); arylistTaskPackageName.add(amTask.baseActivity.getPackageName()); } /* 将ArrayList放到Bundle并将Activity开启 */ Intent intent = new Intent(); intent.setClass(EX10_10.this, EX10_10_1.class); Bundle bundle = new Bundle(); bundle.putStringArrayList("arylistTask", arylistTask); bundle.putStringArrayList("arylistTaskPackageName", arylistTaskPackageName); intent.putExtras(bundle); startActivity(intent); } }); Button02.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub arylistService = new ArrayList<String>(); arylistServicePackageName = new ArrayList<String>(); mRunningTaskServices = mActivityManager .getRunningServices(intGetTaskCounter); int i = 1; /* 北循环及RunningServiceInfo对象取得服务名称与ID并放入ArrayList */ for (RunningServiceInfo amTask : mRunningTaskServices) { arylistService.add("" + (i++) + ": " + amTask.process + "(ID=" + amTask.pid + ")"); arylistServicePackageName.add(amTask.service.getPackageName()); } /* 将ArrayList放到Bundle并将Activity开启 */ Intent intent = new Intent(); intent.setClass(EX10_10.this, EX10_10_2.class); Bundle bundle = new Bundle(); bundle.putStringArrayList("arylistService", arylistService); bundle.putStringArrayList("arylistServicePackageName", arylistServicePackageName); intent.putExtras(bundle); startActivity(intent); } }); } }
正在运行的程序管理
package irdc.ex10_10; import java.util.ArrayList; import android.app.Activity; import android.app.ActivityManager; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; public class EX10_10_1 extends Activity { private ListView ListView01; private ArrayList<String> arylistTask; private ArrayList<String> arylistTaskPackageName; private ArrayAdapter<String> aryAdapter1; private ActivityManager mActivityManager; int click_id; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_1); /* 取得EX10_10所放的ArrayList */ Bundle bunde = this.getIntent().getExtras(); arylistTask = bunde.getStringArrayList("arylistTask"); arylistTaskPackageName = bunde.getStringArrayList("arylistTaskPackageName"); ListView01 = (ListView) findViewById(R.id.ListView01); /* 将ArrayList放到Adapter */ aryAdapter1 = new ArrayAdapter<String>(EX10_10_1.this, R.layout.simple_list_item_1, arylistTask); ListView01.setAdapter(aryAdapter1); ListView01.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int id, long arg3) { // TODO Auto-generated method stub /* 取得ActivityManager */ mActivityManager = (ActivityManager) EX10_10_1.this .getSystemService(ACTIVITY_SERVICE); /* 所点选的index */ click_id = id; AlertDialog.Builder builder = new AlertDialog.Builder(EX10_10_1.this); builder.setCancelable(false); builder.setTitle("Message"); builder.setMessage("确定要删除吗??"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub /* 停止所点击的应用程序 */ mActivityManager.restartPackage(arylistTaskPackageName .get(click_id).toString()); /* 移除ArrayList里的值并更新ListView */ arylistTask.remove(click_id); ListView01.invalidateViews(); } }); builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); builder.show(); } }); } }
正在运行的服务管理
package irdc.ex10_10; import java.util.ArrayList; import android.app.Activity; import android.app.ActivityManager; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; public class EX10_10_2 extends Activity { private ListView ListView02; private ArrayList<String> arylistService; private ArrayList<String> arylistServicePackageName; private ArrayAdapter<String> aryAdapter1; private ActivityManager mActivityManager; int click_id; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_2); /* 取得EX10_10所放的ArrayList */ Bundle bunde = this.getIntent().getExtras(); arylistService = bunde.getStringArrayList("arylistService"); arylistServicePackageName = bunde .getStringArrayList("arylistServicePackageName"); ListView02 = (ListView) findViewById(R.id.ListView02); /* 将ArrayList放到Adapter */ aryAdapter1 = new ArrayAdapter<String>(EX10_10_2.this, R.layout.simple_list_item_1, arylistService); ListView02.setAdapter(aryAdapter1); ListView02.setOnItemClickListener(new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int id, long arg3) { // TODO Auto-generated method stub /* 取得ActivityManager */ mActivityManager = (ActivityManager) EX10_10_2.this .getSystemService(ACTIVITY_SERVICE); /* 所点击的index */ click_id = id; AlertDialog.Builder builder = new AlertDialog.Builder(EX10_10_2.this); builder.setCancelable(false); builder.setTitle("Message"); builder.setMessage("确定要删除吗??"); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub /* 停止所点击的服务 */ mActivityManager.restartPackage(arylistServicePackageName.get( click_id).toString()); /* 移除ArrayList里的值并更新ListView */ arylistService.remove(click_id); ListView02.invalidateViews(); } }); builder.setNegativeButton("NO", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); builder.show(); } }); } }
实在不明白的可以下载源码看:
EX_Android.zip
转载于:https://www.cnblogs.com/nuliniaoboke/archive/2012/10/30/2746061.html
如何去管理正在运行的程序和服务相关推荐
- ssh中exit命令退出远程服务器_解决Linux关闭终端(关闭SSH等)后运行的程序或者服务自动停止...
问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问. 解决方法:使用nohup命令让 ...
- WINDOWS登录系统之前(欢迎界面)运行指定程序脚本服务
为什么80%的码农都做不了架构师?>>> 方法一:创建可在系统登录之前运行的服务 PS:需要用到两个程序-Srvany和Instsrv,点击 http://pan.baidu. ...
- 如何在windows中使用cmd命令去编译,运行C++程序
2019独角兽企业重金招聘Python工程师标准>>> 1.修改环境变量 我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧! ...
- python程序发布 ubuntu_在ubuntu16.04的虚拟环境中运行Python程序作为服务
我正在尝试让一个Flask+SocketIO应用程序作为一个服务在ubuntu16.04上运行,在一个虚拟环境中.我的服务器每天凌晨3点重新启动(超出我的控制范围),所以我需要它在启动时自动启动.在 ...
- C++中运行一个程序的内存分配情况及qt中的内存管理机制
一个由c/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆区(heap) - 一 ...
- Nginx运行FastCGI程序(ngx_http_fastcgi_module模块、fcgi库、spwan-fcgi进程管理器)
一.什么是CGI 通用网关接口(Common Gateway Interface.CGI)描述了客户端和服务器程序之间传输数据的一种标准,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数 ...
- nvm管理node版本 node/npm不是内部或外部命令,也不是可运行的程序
最近,有新老项目一起开发,node版本太高,老项目起不来:node版本太低,新项目还搭不起来-所以,一个nvm就显得很有必要了.这几个坑掉的,摔的我差点起不来- 废话少说就是: 用管理员身份运行.ex ...
- python释放变量内存_python解释器安装,运行python程序的方式及程序运行的步骤,变量与自动的内存管理...
一.python解释器安装 ps: 注意设置环境变量(文件是操作系统的概念,操作系统优先在当前文件夹找,找不到就到环境变量path找) python解释器不兼容 解释器下载官网:http://pyth ...
- Windows 搭建 .NET 跨平台环境并运行应用程序
写在前面 阅读目录: Install .NET Version Manager (DNVM) Install .NET Core Execution Environment (DNX) Write t ...
最新文章
- 传孙正义领投滴滴无人车3亿美元新融资,此前软银宣布出售阿里股份等资产
- 博图读取温度的指令_1200读取温度巡检仪 16路
- DotNet Framework源代码调试问题
- CodeForces - 1301C Ayoub's function(数学)
- Asp.Net Core Mvc Razor之RazorPage
- [html] 写一个标签云的布局
- 这个漏洞能换几杯星巴克?在线等,挺急的
- 如何表示数组所有数都不等于一个数_力扣刷题那些事儿(3)-缺失的第一个正整数(41)...
- el-table 懒加载不触发合计_Angular-懒加载第三方
- iOS 常用到的宏#define
- Spine 2D骨骼动画 教程整理 归档于此
- 操作注册表修改防火墙
- 五款好用到爆炸的小众软件,用过的都好说!建议收藏转发
- word插入对勾对号
- CIO40知识星球—5年工程师升职IT主管(22-27岁)
- 传奇世界开服教程:传奇世界开服需要准备什么?前期需要投入多少?
- RTE2020首批嘉宾公布 技术+行业专家携手顶级投资人参会
- 【微信小程序】WXML WXSS JS
- 数据库的故障及其恢复策略
- 毕业设计管理系统 数据库设计