Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 在AsyncTask中获取/使用Context的最佳方法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我通过扩展AsyncTask类来定义一个单独的线程.在这个类中,我在AsyncTask的onPostExecute和onCancelled方法中执行一些Toasts和Dialog.祝酒词需要应用程序的上下文,所以我需要做的就是:
Toast.makeText(getApplicationContext(),"Some String",1);

使用AlertDialog.builder创建对话框,它还需要在其构造函数中使用上下文.我是否正确地认为这个背景应该是活动的背景?即

AlertDialog.builder builder = new AlertDialog.builder(getActivity());

其中getActivity可以是返回当前活动的用户定义类.如果是这样,处理这种情况的最佳方法是什么?创建类似getActivity的类或将当前活动的上下文传递给AsyncTask的构造函数

我想我正在尝试理解Context的使用 – 我注意到内存泄漏可能是一个问题(还没有真正理解这一点)以及如何使用getApplicationContext()是最好的方法.

解决方法

只需将AsyncTask创建为Activity的内部类,或将Context传递给AsyncTask的构造函数.

内部类:MyActivity.java

public class MyActivity extends Activity {

    // your other methods of the activity here...


    private class myTask extends AsyncTask<Void,Void,Void> {

         protected Void doInBACkground(Void... param) {

             publishProgress(...);  // this will call onProgressupdate();
         }

         protected Void onProgressupdate(Void... prog) {

             Toast.makeText(getActivity(),"text",1000).show(); 
         }
    }
}

构造函数myTask.java

public class myTask extends AsyncTask<Void,Void> {

     Context c;

     public myTask(Context C) {
          this.c = c;
     }

     protected Void doInBACkground(Void... param) {

          publishProgress(...);  // this will call onProgressupdate();
     }

     protected Void onProgressupdate(Void... prog) {
          Toast.makeText(c,1000).show();
     }
}

此外,请不要忘记在对话框上调用.show().

AlertDialog.builder builder = new AlertDialog.builder(getActivity());
builder.show();

大佬总结

以上是大佬教程为你收集整理的android – 在AsyncTask中获取/使用Context的最佳方法是什么?全部内容,希望文章能够帮你解决android – 在AsyncTask中获取/使用Context的最佳方法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。