我找到了一个非常简单的答案:isAdded()
:
true
如果该片段当前被添加到其活动中。
@Override
protected void onPostExecute(Void result){
if(isAdded()){
getResources().getString(R.string.app_name);
}
}
避免onPostExecute
被调用时,Fragment
没有附加到Activity
是取消AsyncTask
当暂停或停止Fragment
.然后isAdded()
不再有必要了。
如果你扩展Application
初始化并维护一个静态的“global”上下文对象,如下所示,然后你可以使用它而不是该活动来加载字符串资源。
public class MyApplication extends Application {
public static Context GLOBAL_APP_CONTEXT;
@Override
public void onCreate() {
super.onCreate();
GLOBAL_APP_CONTEXT = this;
}
}
如果你用这个,你就能逃脱Toast
和资源加载而不用担心生命周期。