首先是新建一个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>
程序运行效果如图所示:
实例代码如下“
public class MyActivity extends Activity
3 {
4 public void test(){};
5 public void test(int position){}
6 }
7 BaseAdater:
8 public class MyBaseAdapter extends BaseAdapter{
9 MyActivity context;
10 public MyBaseAdapter(MyActivity context){
11 thiscontext = context;
12 }
13 //其他函数中调用MyActivity的方法。
14 contexttest();
15 contexttext(1);
16
在minifest中注册该Activity时加上一个<intent-fiter> <action/></intent-filter> action中注明你的广播就OK了。
这个方法需要app获取androidpermissionREAL_GET_TASKS权限
Android 50以上只对系统应用开放。
Android50以下需要添加权限:
androidpermissionGET_TASKS
在android中context可以作很多 *** 作,但是最主要的功能是加载和访问资源。在android中有两种context,一种是
application
context,一种是activity
context,通常我们在各种类和方法间传递的是activity
context。
比如一个activity的onCreate:
protected
void
onCreate(Bundle
state)
{
superonCreate(state);
TextView
label
=
new
TextView(this);
//传递context给view
control
labelsetText("Leaks
are
bad");
setContentView(label);
}
把activity
context传递给view,意味着view拥有一个指向activity的引用,进而引用activity占有的资源:view
hierachy,
resource等。
这样如果context发生内存泄露的话,就会泄露很多内存。
这里泄露的意思是gc没有办法回收activity的内存。
Leaking
an
entire
activity是很容易的一件事。
当屏幕旋转的时候,系统会销毁当前的activity,保存状态信息,再创建一个新的。
intentputExtra("username1",username);
或
Bundle data = new Bundle();
dataputString("username1",username);
intentputExtras(data);
以上就是关于android 获取所有正在运行的activity全部的内容,包括:android 获取所有正在运行的activity、安卓adapter中怎么获取activity、请问下Android里怎么获取桌面或系统里的某个Activity对象等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)