我是android的新手。实际上我试图通过我的应用程序增加Android手机的RAM内存。因为我创建了一个活动,我可以启动我们手机中的其他应用程序。这种方法是成功的减少RAM内存。但我面临一个困难,因为我在应用程序启动后无法看到PARENT活动。我需要推动其他活动(已启动)在启动后立即在后台运行,并且我总是需要显示父活动..
package com.android;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.os.Handler;
import android.widget.LinearLayout;
import android.widget.Toast;
/**
* GraphViewDemo creates some dummy data to demonstrate the GraphView component.
* @author Arno den Hond
**/
public class VsActivity extends Activity {
/**
* Variable Array for GraphView
* verlabel : Background Height Values
* horlabel : Background Width Values
* values : Max Values of Foreground Active Graph
*/
private float[] values = new float[60];
long availableMegs;
private String[] verlabels = new String[] { "500","450","400","350","300","250","200","150","100","50","0"};
private String[] horlabels = new String[] {"0","10", "20", "30", "40", "50", "60"};
private GraphView graphView;
private LinearLayout graph;
private boolean runnable = false;
public static int datasend,test=0;
int cnt=0;
Activity activity = this.activity;
static int count=0;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
graph = (LinearLayout)findViewById(R.id.graph);
graphView = new GraphView(this, values, "TEST GRAPH", horlabels, verlabels, GraphView.LINE);
graph.addView(graphView);
runnable = true;
startDraw.start();
}
@Override
public void onDestroy(){
super.onDestroy();
runnable = false;
}
public void setGraph(){
int i,j;
count=count+10;
try{
j=values.length-1;
for(i=0; i<values.length-1; i++){
values[i] = values[i+1];
}
MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager) getApplicationContext()
.getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
datasend= (int)((mi.availMem / 1048576));
values[values.length-1] = (float) datasend;
graph.removeView(graphView);
graph.addView(graphView);
}
catch (Exception e){
// e.printstacktrace();
}
}
private void launchComponent(String packageName, String name){
System.out.println("launch application "+datasend);
Intent launch_intent = new Intent("android.intent.action.MAIN");
launch_intent.addCategory("android.intent.category.LAUNCHER");
launch_intent.setComponent(new ComponentName(packageName, name));
launch_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if(datasend > 24){
System.out.println("launch application inside if "+packageName+" "+name);
this.startActivity(launch_intent);
}
}
public void startApplication(){
String application_name = "";
test=1;
//ContextWrapper activity = this.activity;
try{
System.out.println("Start application ");
Intent intent = new Intent("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
List<android.content.pm.PackageInfo> packageList;
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
PackageManager pm = this.getPackageManager();
packageList = pm.getInstalledPackages(0);
List<ResolveInfo> resolveinfo_list = pm.queryIntentActivities(intent, 0);
for(ResolveInfo info:resolveinfo_list){
application_name = info.activityInfo.packageName;
System.out.println(info.activityInfo.packageName+" "+info.activityInfo.name);
//if(info.activityInfo.packageName.equalsIgnoreCase(application_name)){
launchComponent(info.activityInfo.packageName, info.activityInfo.name);
// break;
// }
}
}
catch (ActivityNotFoundException e) {
Toast.makeText(activity.getApplicationContext(), "There was a problem loading the application: "+application_name,Toast.LENGTH_SHORT).show();
}
}
public Handler handler = new Handler(){
@Override
public void handleMessage(android.os.Message msg){
switch(msg.what){
case 0x01:
setGraph();
// if(test == 0){
startApplication();//}
break;
}
}
};
public Thread startDraw = new Thread(){
@Override
public void run(){
while(runnable){
handler.sendEmptyMessage(0x01);
try{
MemoryInfo mi = new ActivityManager.MemoryInfo();
ActivityManager activityManager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
activityManager.getMemoryInfo(mi);
long ava = mi.availMem / 1048576L;
//count=(int)ava;
//System.out.println("SUDARHAN RAMAN "+ava+" "+count);
Thread.sleep(1000);
} catch (Exception e){
// e.printstacktrace();
}
}
}
};
}
这里GraphView是一个使用Canvas.drawline(...)绘制图形的视图 在上面的代码中, startapplication()将启动子(安装在我们手机中的应用程序)活动。
Plz帮助...
答案 0 :(得分:0)
Intent i = new Intent(Intent.ACTION_MAIN);
PackageManager manager = mContext.getPackageManager();
i = manager.getLaunchIntentForPackage(_AppPkgName);
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);