android异步任务保持挂起运行状态
嗨,谢谢你的关注 有人能帮我吗?我的应用程序保持progressdialog处于活动状态,asynctask保持挂起运行状态。我尝试在执行异步任务后取消它,但不起作用 公共类MttoBitacoraFragment扩展了片段{android异步任务保持挂起运行状态,android,android-asynctask,Android,Android Asynctask,嗨,谢谢你的关注 有人能帮我吗?我的应用程序保持progressdialog处于活动状态,asynctask保持挂起运行状态。我尝试在执行异步任务后取消它,但不起作用 公共类MttoBitacoraFragment扩展了片段{ ListView lv; AutoCompleteTextView actEmpleado,actEstatus, actDepto; List<Autcompletecls> listEmpelado= new ArrayList<Autcompl
ListView lv;
AutoCompleteTextView actEmpleado,actEstatus, actDepto;
List<Autcompletecls> listEmpelado= new ArrayList<Autcompletecls>();
List<Autcompletecls> listEstatus= new ArrayList<Autcompletecls>();
List<Autcompletecls> listDepto= new ArrayList<Autcompletecls>();
AutocompleteAdapter adpEmpleado, adpEstatus, adpDepto;
ProgressDialog dialog;
WS webservice;
public MttoBitacoraFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view=inflater.inflate(R.layout.fragment_mtto_bitacora, container, false);
String[][] para = new String[0][0];
actEmpleado = (AutoCompleteTextView)view.findViewById(R.id.actMttoProblemaEmpleado);
actEstatus =(AutoCompleteTextView)view.findViewById(R.id.actMttoProblemaEstatus);
actDepto=(AutoCompleteTextView)view.findViewById(R.id.actMttoProblemaDepto);
ansyWS call = new ansyWS("ConEmpleadoDLL", para);
call.execute();
call.cancel(true);
while(call.getStatus() == AsyncTask.Status.RUNNING)
{
call.cancel(true);
}
if(call.getStatus() != null || call.getStatus() == AsyncTask.Status.RUNNING) {
call.cancel(true);
ansyWS call2 = new ansyWS("ConEstatusDLL",para);
call2.execute();
call2.cancel(true);
}
else {
ansyWS call2 = new ansyWS("ConEstatusDLL",para);
call2.execute();
call2.cancel(true);
}
actEmpleado.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Autcompletecls item = listEmpelado.get(position);
Toast.makeText(getContext(), item.getId(), Toast.LENGTH_SHORT).show();
}
});
actEstatus.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Autcompletecls item = listEstatus.get(position);
Toast.makeText(getContext(), item.getId(), Toast.LENGTH_SHORT).show();
}
});
return view;
}
class ansyWS extends AsyncTask<String,String,String>{
private volatile boolean running = true;
String[][] parametros;
String methodname;
SoapObject resultado;
public ansyWS(String _methodname, String[][] _parametros)
{
methodname = _methodname;
parametros = _parametros;
}
@Override
protected void onPreExecute() {
dialog = new ProgressDialog(getActivity());
dialog.setMessage(getResources().getString(R.string.dialog_message_save));
dialog.setIndeterminate(false);
dialog.setCancelable(false);
dialog.show();
}
@Override
protected String doInBackground(String... params) {
webservice = new WS();
resultado = webservice. LlamaWS(methodname,parametros);
dialog.dismiss();
if (resultado != null) {
for (int i = 0; i < resultado.getPropertyCount(); i++) {
SoapObject datos = (SoapObject) resultado.getProperty(i);
switch (methodname) {
case "ConEmpleadoDLL":
listEmpelado.add(new Autcompletecls(datos.getProperty(0).toString(), datos.getProperty(1).toString()));
break;
case "ConEstatusDLL":
listEstatus.add(new Autcompletecls(datos.getProperty(0).toString(), datos.getProperty(1).toString()));
break;
}
}
return methodname;
} else {
return "error";
}
}
@Override
protected void onPostExecute(String s) {
while(running) {
switch (s) {
case "ConEmpleadoDLL":
actEmpleado.setThreshold(0);
adpEmpleado = new AutocompleteAdapter(getContext(), R.layout.activity_main, R.id.tv_autocomplete_text, listEmpelado);
actEmpleado.setAdapter(adpEmpleado);
break;
case "ConEstatusDLL":
actEstatus.setThreshold(0);
adpEstatus = new AutocompleteAdapter(getContext(), R.layout.activity_main, R.id.tv_autocomplete_text, listEstatus);
actEstatus.setAdapter(adpEstatus);
break;
}
}
cancel(true);
dialog.dismiss();
}
@Override
protected void onCancelled() {
running = false;
super.onCancelled();
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i("SomeTag", System.currentTimeMillis() / 100L + " onDestory()");
}
ListView-lv;
自动完成文本视图actEmpleado、actEstatus、actDepto;
List listemplado=new ArrayList();
List ListStatus=新建ArrayList();
List listDepto=new ArrayList();
自动完成适配器adpEmpleado、adpEstatus、ADPEPTO;
进程对话;
WS-webservice;
公共MttoBitacoraFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u mtto\u bitacora,容器,假);
字符串[][]para=新字符串[0][0];
actemplado=(AutoCompleteTextView)view.findviewbyd(R.id.actmttoproblemo);
actEstatus=(AutoCompleteTextView)view.findviewbyd(R.id.actMttoProblemaEstatus);
actDepto=(AutoCompleteTextView)view.findviewbyd(R.id.actMttoProblemaDepto);
ansyWS call=新的ansyWS(“Conemployodll”,第2段);
call.execute();
call.cancel(true);
while(call.getStatus()==AsyncTask.Status.RUNNING)
{
call.cancel(true);
}
if(call.getStatus()!=null | | call.getStatus()==AsyncTask.Status.RUNNING){
call.cancel(true);
ansyWS call2=新的ansyWS(“ConEstatusDLL”,第2段);
call2.execute();
call2.取消(true);
}
否则{
ansyWS call2=新的ansyWS(“ConEstatusDLL”,第2段);
call2.execute();
call2.取消(true);
}
ActTempleADO.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Autcompletecls项目=Listemplado.get(位置);
Toast.makeText(getContext(),item.getId(),Toast.LENGTH_SHORT).show();
}
});
actEstatus.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Autcompletecls项=ListStatus.get(位置);
Toast.makeText(getContext(),item.getId(),Toast.LENGTH_SHORT).show();
}
});
返回视图;
}
类ansyWS扩展异步任务{
private volatile boolean running=true;
字符串[][]参数;
字符串方法名;
SoapObject resultado;
公共ansyWS(字符串_方法名,字符串[][].\u参数)
{
methodname=\u methodname;
parametros=_parametros;
}
@凌驾
受保护的void onPreExecute(){
dialog=newprogressdialog(getActivity());
setMessage(getResources().getString(R.string.dialog\u message\u save));
dialog.setUndeterminate(false);
对话框。可设置可取消(false);
dialog.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
webservice=newws();
resultado=webservice.LlamaWS(methodname,parametros);
dialog.dismise();
if(resultado!=null){
对于(int i=0;i
}尝试在重写的onCancelled()方法中取消对话框。如果使用
.cancel(true)
,AsynkTask将调用onCancelled()
,而不是onPostExcecute(String)
(参考:AsyncTask文档)不工作,应用程序将关闭并锁定