2013-04-23 78 views

回答

16

您可以使用Application类:

public class MyApplication extends Application { 
private static Context context; 
private static Activity activity; 

public void onCreate() { 
    super.onCreate(); 
    MyApplication.context = getApplicationContext(); 
} 

public synchronized static Context getAppContext() { 
    return MyApplication.context; 
} 

/** 
* setCurrentActivity(null) in onPause() on each activity 
* setCurrentActivity(this) in onResume() on each activity 
* 
*/ 

public static void setCurrentActivity(Activity currentActivity) { 
    activity = currentActivity; 
} 

public static Activity currentActivity() { 
    return activity; 
} 

} 
+2

这种“解决方案”是在应用程序中引入了几个错误,包括:内存泄漏和错误引用。始终控制当前活动。有很多技术来跟踪活动转换(或片段交易)。这里的主要问题是因为您正在使用静态变量来保存您知道随时无效的实例。 – marciowb 2014-02-11 22:52:05

+3

这就是为什么我在代码中写了一条评论,说在onPause中将当前活动设置为null,并在onResume中再次设置它 – Abdullah 2014-03-06 06:54:12

+1

我认为这个解决方案是有效的。任何人都可以尝试一下并解决这个问题。 – 2015-03-31 04:49:27