热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何去管理正在运行的程序和服务

首发地址:http:www.eoeandroid.comthread-201709-1-1.html看到几个不错的源码:植物大战僵尸,又见

首发地址: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了下感觉还是挺实用的,所以就发上来给大家看看。

权限这个不要忘记哦!)

主界面

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 arylistTask;
private ArrayList arylistTaskPackageName;
private ArrayList arylistService;
private ArrayList arylistServicePackageName;
private int intGetTaskCounter = 30;
public List mRunningTasks;
public List 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();
arylistTaskPackageName
= new ArrayList();
/* 用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();
arylistServicePackageName
= new ArrayList();
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 arylistTask;
private ArrayList arylistTaskPackageName;
private ArrayAdapter 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(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 arylistService;
private ArrayList arylistServicePackageName;
private ArrayAdapter 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(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


推荐阅读
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了Java中Currency类的getInstance()方法,该方法用于检索给定货币代码的该货币的实例。文章详细解释了方法的语法、参数、返回值和异常,并提供了一个示例程序来说明该方法的工作原理。 ... [详细]
  • android 触屏处理流程,android触摸事件处理流程 ? FOOKWOOD「建议收藏」
    android触屏处理流程,android触摸事件处理流程?FOOKWOOD「建议收藏」最近在工作中,经常需要处理触摸事件,但是有时候会出现一些奇怪的bug,比如有时候会检测不到A ... [详细]
author-avatar
邵小辕_669
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有