我试图在我的AsyncTask中获取名为Opciones的类的上下文(这个类是唯一调用该任务的类),但我不知道如何做到这一点,我看到了如下代码:
protected void onPostExecute(Long result) {
Toast.makeText(Opciones.this,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show();
}
但它对我不起作用,它说:"No enclosing instance of the type Opciones in scope"
发布于 2017-07-08 11:43:39
保持对主机活动的弱引用可以防止内存泄漏。
static class MyTask extends AsyncTask<Void, Void, Void> {
// Weak references will still allow the Activity to be garbage-collected
private final WeakReference<Activity> weakActivity;
MyTask(Activity myActivity) {
this.weakActivity = new WeakReference<>(myActivity);
}
@Override
public Void doInBackground(Void... params) {
// do async stuff here
}
@Override
public void onPostExecute(Void result) {
// Re-acquire a strong reference to the activity, and verify
// that it still exists and is active.
Activity activity = weakActivity.get();
if (activity == null
|| activity.isFinishing()
|| activity.isDestroyed()) {
// activity is no longer valid, don't do anything!
return;
}
// The activity is still valid, do main-thread stuff here
}
}
发布于 2013-06-04 22:59:35
由于只有一个Activity
使用此任务,因此只需将其作为Activity
内部类即可
public class Opciones extends Activity
{
public void onCreate()
{
...
}
public class MyTask extends AsyncTask<>
{
...
protected void onPostExecute(Long result) {
Toast.makeText(Opciones.this,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show();
}
}
然后,您可以访问Activity
及其Context
的成员变量
发布于 2013-06-04 22:58:49
您可以编写getApplicationContex()
。或者定义全局变量。
Activity activity;
在onCreate()
函数中
activity = this;
然后,
protected void onPostExecute(Long result) {
Toast.makeText(activity,"Subiendo la foto. ¡Tras ser moderada empezara a ser votada!: ", Toast.LENGTH_LONG).show();
}
https://stackoverflow.com/questions/16920942
复制相似问题