gpt4 book ai didi

java - 通过 AsyncTask 循环执行方法 - Android?

转载 作者:行者123 更新时间:2023-11-29 05:07:02 24 4
gpt4 key购买 nike

我在编程方面有点菜鸟,但我来这里是想征求你的意见。我正在制作一个应用程序,它为您提供系统信息,如 CPU 负载、RAM 等。我已经得到了我需要的一切,而且它可以工作!但是当我按下启动新 Activity 的按钮时出现问题,我可以在其中看到系统信息,同样在该 Activity 中,我在 onCreate() 方法中运行了一个方法 getSystemInfo() 这让我得到了所有我需要的信息,这需要一些时间才能完成,这意味着黑屏,用户必须等待..

我想在执行 getSystemInfo() 方法之前启动并加载 Activity ,该方法应该在后台循环运行,直到用户按下返回按钮。

我看过这个:How to use AsyncTask correctly in Android但对我来说还是太难了。

如有任何帮助,我们将不胜感激。谢谢你一百万次!

我的代码在这里:

public class SystemInfoActivity extends Activity{

TextView outCPU;
TextView outMEM;
TextView outTASKS;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_systeminfo);
Log.d("MSG:", "running");

outCPU = (TextView) findViewById(R.id.outCPU);
outMEM = (TextView) findViewById(R.id.outMEM);
outTASKS = (TextView) findViewById(R.id.outTASKS);

getSystemInfo();

}

protected void getSystemInfo() {

//**********CPU********
RunCommandTOP top = new RunCommandTOP();
int[] cpuUsage = top.CommandTOP();

int user = cpuUsage[0];
int system = cpuUsage[1];
int total = (system + user);
outCPU.setText("CPU usage: " + user + "% user, " + system + "% system, " + total + "% total");


//**********RAM********
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(memoryInfo);
long availibleMB = memoryInfo.availMem / 1048576L;
long totalMB = memoryInfo.totalMem / 1048576L;
long usedMB = totalMB - availibleMB;

outMEM.setText("RAM usage: " + usedMB + "/" + totalMB + "MB");

//**********TASKS********
RunCommandPS ps = new RunCommandPS();
String commandLines = ps.CommandPS();

int NumberLines = countTasks(commandLines);
int Tasks = NumberLines - 1;

outTASKS.setText("Tasks: " + Tasks);

}

private static int countTasks(String str) {
String[] lines = str.split("\r\n|\r|\n");
return lines.length;
}

public void onBackPressed() {
Log.i("MSG", "Going back");
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
//return true;
}
}

最佳答案

使用man很简单。

只需在下一行调用 onCreate 方法新的异步()。执行();

但在 onPostExecute 中设置 Text 和更新 UI,你可以在 doInBackground 方法中返回一些参数并在 onPostExecute 中获取它们

private class Async extends AsyncTask<Void, Void, String> {

@Override
protected String doInBackground(Void... params) {
String myParamsForUi = getSystemInfo();
return myParamsForUi;
}

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);

outTASKS.setText("Tasks: " + result);

}

}

关于java - 通过 AsyncTask 循环执行方法 - Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30055519/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com