java - 在android studio中同时运行两个类
问题描述
我设置当前应用程序的方式是,当您按下按钮时,应用程序在底部显示一个计数器,该计数器上升到十然后停止,然后它在顶部显示一个从 10 到 0 的计数器。但是,我需要做的是让这些计数器同时发生。我尝试使用线程,但我认为我一定没有做对。任何帮助,将不胜感激。
编辑:我想同时运行 mytask 和 mytask1,它们当前相互运行
edit2:我被要求提供发布进度的代码
protected final void publishProgress(Progress... values) {
if (!isCancelled()) {
getHandler().obtainMessage(MESSAGE_POST_PROGRESS,
new AsyncTaskResult<Progress>(this, values)).sendToTarget();
}
}
代码:
public class MainActivity extends AppCompatActivity {
Button btn;
TextView txt;
Integer count =1;
Integer count1 =10;
TextView txt1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//p
//p
btn = (Button) findViewById(R.id.button);
btn.setText("Start");
txt = (TextView) findViewById(R.id.textView);
txt1 = (TextView) findViewById(R.id.textView2);
View.OnClickListener listener = new View.OnClickListener(){
public void onClick(View view){
count =1;
//p
//p
switch (view.getId()){
case R.id.button:
new MyTask().execute(10);
new MyTask1().execute(0);
break;
}
}
};
btn.setOnClickListener(listener);
}
class MyTask extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
for (; count <= params[0]; count++) {
try {
Thread.sleep(1000);
publishProgress(count);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Task Completed.";
}
@Override
protected void onPostExecute(String result) {
txt.setText(result);
btn.setText("Restart");
}
@Override
protected void onPreExecute() {
txt.setText("Task Starting...");
}
@Override
protected void onProgressUpdate(Integer... values) {
txt.setText("BackGround Task Running..."+ values[0]);
}
}
class MyTask1 extends AsyncTask<Integer, Integer, String> {
@Override
protected String doInBackground(Integer... params) {
for (; count1 >= params[0]; count1--) {
try {
Thread.sleep(1000);
publishProgress(count1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return "Task Completed.";
}
@Override
protected void onPostExecute(String result) {
txt1.setText(result);
btn.setText("Restart");
}
@Override
protected void onPreExecute() {
txt1.setText("Task Starting...");
}
@Override
protected void onProgressUpdate(Integer... values) {
txt1.setText("Countdown "+ values[0]);
}
}
}
解决方案
AsyncTasks 根据文档在单个线程上执行,所以这可能是问题所在。
推荐阅读
- javascript - 通过将属性相乘来更新数组总属性
- javascript - AWS Cognito:更改用户属性或删除用户如何需要密码?
- mapping - MRTK v2 空间映射隐藏多边形的可视化
- rust - 从先前完成的 Stream 的结果中产生一个 Stream
- google-mlkit - 如何使用 MLKit FaceDetector 跟踪图像的人脸
- python - Kivy在wi上返回黑屏
- android - 从中心而不是左上角设置视图的位置
- python - 使用 BeautifulSoup 以与 html 中相同的格式从 html 中提取文本
- android-intent - 无法将 MediaPlaybackService 与意图绑定并且无法检测到 MediaSessionCompat.Callbacks
- java - 如何使用 Talend 从 tOracleRow 组件执行 PLSQL 脚本?