Zjsn-develop / ZjsnViewer

战舰少女Viewer
http://www.crafter.me/zjsnviewer/
6 stars 3 forks source link

要不要把某些依赖context的函数改成不依赖的? #17

Open PaleNeutron opened 8 years ago

PaleNeutron commented 8 years ago

我发现大部分的Context只是用来获取preference而不是用来确定生命周期。 那么对于这部分的context是不是可以用application context代替? 大致做法如下:

public class zjsApplication extends Application{

    private static zjsApplication instance;
    private static Context context;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        context = getApplicationContext();
        startService(new Intent(this, TimerService.class));
    }

    public static zjsApplication getInstance() {
        return instance;
    }
    public static Context getAppContext() {
        return zjsApplication.context;
    }
}

参考了http://stackoverflow.com/questions/2002288/static-way-to-get-context-on-android, 不知道弊端是不是可以忽略的。

traburiss commented 8 years ago

一般是这样做的,所以各自改一下吧。

PaleNeutron commented 8 years ago

你们都同意的话我就开始改了…… NetWork的代码还有一个大的重构……等我push了之后你们再在这部分动手可能merge的时候会轻松些

JohnnySun commented 8 years ago

是的,一般用application context代替。 context能少用就少用,省得出现生命周期问题

JohnnySun commented 8 years ago

简单来说, 就是如果大量再static中使用了context,而传进来的context这样的话所在的那个类就不能被gc回收,因为这样你在一个单例中一直引用了这个context,就会造成内存泄漏。 而是用application context的话,因为application context的生命周期和application一样,那么实际上和你的单例的生命周期也一样,这样就不会造成内存泄漏问题