我是android开发的新手,我想在单击切换按钮时设置textview。单击切换按钮时,将调用长度操作方法,因此在此之前,我想设置一个文本视图,说“服务正在启动”,但是我注意到,一旦切换按钮状态从“开始”变为“停止”后,即会设置文本视图方法调用完成。
您能帮我在方法调用之前显示textview吗?
我已经解决了下面的代码。
@Override
protected void onResume() {
super.onResume();
Reader.getInstance(this,this);
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
textView.setVisibility(View.VISIBLE);
Thread t = new Thread(){
public void run(){
startMyService();
}
};
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
textView.setVisibility(View.GONE);
}
else {
Thread t = new Thread(){
public void run(){
stopMyService();
}
};
t.start();
}
}
});
}
谢谢。
我使用了以下代码,但是单击切换按钮后,没有任何显示。我尝试将冗长的代码放入线程中,但是即使在使用thread.join之后,该方法也没有执行。
答案 0 :(得分:0)
尝试一下:
class startservice_AsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
textView.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
textView.setVisibility(View.GONE);
}
@Override
protected Void doInBackground(Void... params) {
startMyService();
return null;
}
}
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
startservice_AsyncTask startserviceTask = new startservice_AsyncTask();
startserviceTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
else {
Thread t = new Thread(){
public void run(){
stopMyService();
}
};
t.start();
}
}
});