Git Product home page Git Product logo

Comments (17)

KingJA avatar KingJA commented on September 23, 2024

@liguangze 这和你调用的时机有关,你可以设LoadingCallback为初始界面,也可以自定一个一个初始Callback,这样就不会有空白页面的时机。

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

怎么设置LoadingCallback为初始界面,我在activity的oncreat()里面
loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
@OverRide
public void onReload(View v) {

        }
    });

这样不就是最先执行的吗

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze
LoadSir.beginBuilder()
.addCallback(new ErrorCallback())
.addCallback(new EmptyCallback())
.addCallback(new LoadingCallback())
.setDefaultCallback(LoadingCallback.class)//here
.commit();

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

@KingJA 这些不是在Application中定义的吗,在Application中定义,要想设置为初始页面,还要在activity中在初始化一次吗

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 理论上,如果你已经设置了LoadingCallback为初始Callback,那么你首先看到的会是LoadingCallback的布局,而不是空白的,更不会延迟1秒。能否提供完整代码,或者gmai代码.rar给我呢。

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

我这是整个项目,你要项目的源码?

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 你只要给我所有涉及到LoadSir的片段即可。

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

-------------------------Application中这样注册的----------------------------------

    /**
     * 初始化加载数据为空,超时,等待等页面的框架,
     */
    if (setupLeakCanary()) return;
    LoadSir.beginBuilder()

// .addCallback(new ErrorCallback())
.addCallback(new EmptyCallback())
.addCallback(new LoadingCallback())
// .addCallback(new TimeoutCallback())
// .addCallback(new CustomCallback())
.setDefaultCallback(LoadingCallback.class)
.commit();

}
private boolean setupLeakCanary() {
    if (LeakCanary.isInAnalyzerProcess(this)) {
        // This process is dedicated to LeakCanary for heap analysis.
        // You should not init your app in this process.
        return true;
    }
    LeakCanary.install(this);
    return false;
}

-----------------------------------------------activity中这样注册---------------------------------------------------------------------------------------------------


    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // TODO: add setContentView(...) invocation
    ButterKnife.bind(this);
    loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
        @Override
        public void onReload(View v) {

        }
    });
}

------------------------------------------------------------------------------------------------



------------------------------------服务器返回成功失败关闭------------------------------------------------------------------------------------------------------------------------------------------------------------

    @Override
public void successFul(HotBean T) {

// stopProgressDialog();
mSwipeRefreshLayout.finishRefreshing();
mSwipeRefreshLayout.finishLoadmore();
mBookList = T.getBookList();
dataList.addAll(mBookList);
listAdapter.notifyDataSetChanged();
//返回的size不足10证明没有数据了,将加载更多设置为不显示
if (mBookList.size() < Contants.PAGE_SIZE) {
mSwipeRefreshLayout.setEnableLoadmore(false);
}
loadService.showSuccess();
}

@Override
public void fail(Exception e) {
    loadService.showSuccess();
    mSwipeRefreshLayout.finishRefreshing();
    mSwipeRefreshLayout.finishLoadmore();
}

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

loadService.showSuccess(); 这段代码注释后,就能看出来,有短暂的白屏,然后在显示progressBar,不到一秒,也就0.5秒吧

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 你好,从你提供的代码里,我看不出哪里异常,请问LoadSir.getDefault().register(...)之前有进行一些其它操作吗,导致延迟加载视图。setContentView(...)是延迟到子类实现吗

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

----------------------------父类执行的-------------------------------------
protected void onCreate(@nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
beforeSetContentView();
setContentView(getContentId());
ButterKnife.bind(this);
try{
presenter = GenericHelper.newPresenter(this);
}catch (Exception e) {
e.printStackTrace();
}
httpDao = new HttpDapImpl(this);
initViews();
onInit();
onListener();
if (presenter != null) {


-------------------------子类实现的,有影响吗--------------------------------------------

@Override
protected int getContentId() {
    return R.layout.activity_hotbooks;
}


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // TODO: add setContentView(...) invocation
    ButterKnife.bind(this);
    loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
        @Override
        public void onReload(View v) {

        }
    });

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 这就对了,子类onCreate里的super.onCreate(savedInstanceState);做了父类所有初始化工作,然后才执行LoadSir的显示进度条的逻辑,0.5秒的停顿应该就是这里花费的。如果你的大部分的Activity对LoadSir的初始化都差不多的话就请把LoadSir的register(...)放在父类里,但是要在initViews()后。尽量别在LoadSir.register(...)前别做太多的耗时工作。下个版本v1.3.0将对LoadSir初始化做修改,到时候你可以随便放置了。

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 可以在父类中将initViews();放置ButterKnife.bind(this);后,然后立即执行LoadSir.register(...),将onReload(View v)抽象出来留给子类实现。

from loadsir.

liguangze avatar liguangze commented on September 23, 2024
setContentView(getContentId());
    ButterKnife.bind(this);
    loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
        @Override
        public void onReload(View v) {

        }
    });

还是会有短暂的白屏,是不是放到setContentView(getContentId());之前啊,

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

希望1.3加一个布局可以设置成透明的效果,就是加载loading的时候,不是一个白白背景,可以显示加载下的内容,透明度

from loadsir.

KingJA avatar KingJA commented on September 23, 2024

@liguangze 你好,v1.3.2-pre已经实现该需求,可下载测试。在callback中override public boolean getSuccessVisible()返回为true即可。近期将整合issues发布新版本。

from loadsir.

liguangze avatar liguangze commented on September 23, 2024

@KingJA 谢谢

from loadsir.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.