
首先是新建一个Android工程,然后修改mainxml文件如下:
添加一个ListView
[html] view plaincopy
<xml version="10" encoding="utf-8">
<LinearLayout xmlns:android=">
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/tasklist"
/>
</LinearLayout>
然后编辑java代码
[java] view plaincopy
package comcaydenrun;
import javautilArrayList;
import javautilIterator;
import javautilList;
import androidappActivity;
import androidappActivityManager;
import androidappActivityManagerRunningTaskInfo;
import androidcontentContext;
import androidosBundle;
import androidwidgetArrayAdapter;
import androidwidgetListAdapter;
import androidwidgetListView;
public class MyActivityRunDemo extends Activity {
private ListView tasklist=null;
private ListAdapter adapter=null;
private List<String> all=new ArrayList<String>();
private ActivityManager activityManager=null;
/ Called when the activity is first created /
@Override
public void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
tasklist=(ListView)thisfindViewById(Ridtasklist);
activityManager=(ActivityManager)supergetSystemService(ContextACTIVITY_SERVICE);
listActivity();
}
public void listActivity(){
List<RunningTaskInfo> tasks= activityManagergetRunningTasks(30);
Iterator<RunningTaskInfo> itInfo=tasksiterator();
while(itInfohasNext()){
RunningTaskInfo info=itInfonext();
alladd("id="+infoid+","+infobaseActivitygetClassName());
}
adapter=new ArrayAdapter<String>(this, androidRlayoutsimple_list_item_1,thisall);
tasklistsetAdapter(adapter);
}
}
最后需要再配置所需要的权限AndroidManifestxml
[html] view plaincopy
<xml version="10" encoding="utf-8">
<manifest xmlns:android=">
package="comcaydenrun"
android:versionCode="1"
android:versionName="10">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name="MyActivityRunDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="androidintentactionMAIN" />
<category android:name="androidintentcategoryLAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="androidpermissionGET_TASKS"></uses-permission>
</manifest>
程序运行效果如图所示:
android开发中获取当前的Activity有多种情况;
在Activity中,this就是当前的Activity,例如thisstartActivity。
在Fragment中可以通过 getActivity()来得到当前装载这个Fragment的Activity。
通过Activity堆栈来获取当前显示的这个Activity
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = amgetRunningTasks(1)get(0)topActivity;
在minifest中注册该Activity时加上一个<intent-fiter> <action/></intent-filter> action中注明你的广播就OK了。
在AndroidManifestxml中设置该Activity的属性android:launchMode="singleTask"
然后配合intentaddFlags(IntentFLAG_ACTIVITY_BROUGHT_TO_FRONT)使用。单一设置singleTask的方法是不好用的。
虽然android:launchMode="singleInstance"也会实现类似的效果,但是它会重新建立一个新的栈来存放这个实例。
获取activity实例有两种办法:
1、通过context来获取,简单方便:
private String getRunningActivityName() {
String contextString = contexttoString();
return contextStringsubstring(contextStringlastIndexOf("") + 1, contextStringindexOf("@"));
}
2、通过特定权限获取
<uses-permission android:name="androidpermissionGET_TASKS" />
private String getRunningActivityName(){
ActivityManager activityManager=(ActivityManager) getSystemService(ContextACTIVITY_SERVICE);
String runningActivity=activityManagergetRunningTasks(1)get(0)topActivitygetClassName();
return runningActivity;
}
以上就是关于android 获取所有正在运行的activity全部的内容,包括:android 获取所有正在运行的activity、如何获得当前的activity android、请问下Android里怎么获取桌面或系统里的某个Activity对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)