我有一个Activity,其onCreate()方法我称之为Utility函数。 此实用程序函数需要一个回调类实例作为参数,在该参数中它返回我需要的信息。这是:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Utility.functionA(new functionACallBack() {
/**
*
*/
private static final long serialVersionUID = -7896922737679366614L;
@Override
public void onResponse(String error) {
((MyActivity) AppClass.getAppContext()).finish();
}
});
}
获得该信息后,我想关闭活动。所以我从我为回调创建的匿名类中调用了finish()。
但是活动还没有完成。我想也许我需要从UI线程调用finish()所以我做了runOnUiThread(),在里面我也尝试调用finish()。但它只是不起作用。
有人可以帮我解决这个问题吗?
更新:
我正在存储APP上下文然后尝试使用它但无济于事。
public class AppClass extends Application {
private static Context mContext;
@Override
public void onCreate() {
super.onCreate();
AppClass.mContext = getApplicationContext();
}
public static Context getAppContext(){
return AppClass.mContext;
}
}
答案 0 :(得分:1)
只需拨打以下内容:
@Override
public void onResponse(String error) {
((Activity) context).finish();
}
由于这是static
功能,您必须能够以Context
方式访问static
。您可以将其保存为Class变量,但您必须了解其处理方式,因为它可能会导致内存泄漏。
为了避免它们,你可以声明一个extends Application
的类并保存你的上下文,这样你就不会有内存泄漏。
答案 1 :(得分:0)
尝试使用此代码:
((Activity) ActivityClass.this).finish();
请记住,使用Activity类,而不是Application类。