Comments (17)
@liguangze 这和你调用的时机有关,你可以设LoadingCallback为初始界面,也可以自定一个一个初始Callback,这样就不会有空白页面的时机。
from loadsir.
怎么设置LoadingCallback为初始界面,我在activity的oncreat()里面
loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
@OverRide
public void onReload(View v) {
}
});
这样不就是最先执行的吗
from loadsir.
@liguangze
LoadSir.beginBuilder()
.addCallback(new ErrorCallback())
.addCallback(new EmptyCallback())
.addCallback(new LoadingCallback())
.setDefaultCallback(LoadingCallback.class)//here
.commit();
from loadsir.
@KingJA 这些不是在Application中定义的吗,在Application中定义,要想设置为初始页面,还要在activity中在初始化一次吗
from loadsir.
@liguangze 理论上,如果你已经设置了LoadingCallback为初始Callback,那么你首先看到的会是LoadingCallback的布局,而不是空白的,更不会延迟1秒。能否提供完整代码,或者gmai代码.rar给我呢。
from loadsir.
我这是整个项目,你要项目的源码?
from loadsir.
@liguangze 你只要给我所有涉及到LoadSir的片段即可。
from loadsir.
-------------------------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.
loadService.showSuccess(); 这段代码注释后,就能看出来,有短暂的白屏,然后在显示progressBar,不到一秒,也就0.5秒吧
from loadsir.
@liguangze 你好,从你提供的代码里,我看不出哪里异常,请问LoadSir.getDefault().register(...)之前有进行一些其它操作吗,导致延迟加载视图。setContentView(...)是延迟到子类实现吗
from loadsir.
----------------------------父类执行的-------------------------------------
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.
@liguangze 这就对了,子类onCreate里的super.onCreate(savedInstanceState);做了父类所有初始化工作,然后才执行LoadSir的显示进度条的逻辑,0.5秒的停顿应该就是这里花费的。如果你的大部分的Activity对LoadSir的初始化都差不多的话就请把LoadSir的register(...)放在父类里,但是要在initViews()后。尽量别在LoadSir.register(...)前别做太多的耗时工作。下个版本v1.3.0将对LoadSir初始化做修改,到时候你可以随便放置了。
from loadsir.
@liguangze 可以在父类中将initViews();放置ButterKnife.bind(this);后,然后立即执行LoadSir.register(...),将onReload(View v)抽象出来留给子类实现。
from loadsir.
setContentView(getContentId());
ButterKnife.bind(this);
loadService = LoadSir.getDefault().register(this, new Callback.OnReloadListener() {
@Override
public void onReload(View v) {
}
});
还是会有短暂的白屏,是不是放到setContentView(getContentId());之前啊,
from loadsir.
希望1.3加一个布局可以设置成透明的效果,就是加载loading的时候,不是一个白白背景,可以显示加载下的内容,透明度
from loadsir.
@liguangze 你好,v1.3.2-pre已经实现该需求,可下载测试。在callback中override public boolean getSuccessVisible()返回为true即可。近期将整合issues发布新版本。
from loadsir.
@KingJA 谢谢
from loadsir.
Related Issues (20)
- 项目还维护吗? HOT 2
- 注册view布局时会出现问题
- 能够加在切换界面状态的时候加入动画 能够淡入淡出 HOT 1
- 在使用转换器回调的时候如何动态修改错误页面的提示文字 HOT 2
- 有没有人遇到当数据很快获取到时,不能显示成功布局,还是加载布局的情况? HOT 6
- 承载各个fragment的容器如果是FragmentContainerView或者Fragment,在调用register注册时会crash HOT 1
- DefaultCallback 调用时机有问题 HOT 3
- 什么时候增加viewbinding 支持?
- 某个页面自定义loadsir不会继承默认全局里面的callback? HOT 2
- loadIsr无法取消
- jcent仓库要过期了 不更新一下吗
- 用loadSir绑定SmartRefreshLayout中的RecyclerView 直接就空白视图 什么都不展示 HOT 3
- onReloadEvent 事件重写 点击特定view的事件 第一次无响应 ,第二次才触发 点击事件 HOT 3
- 为什么不提供一个unregister的方法呢 HOT 1
- 请问什么时候迁移到maven-central呢? HOT 4
- 希望添加获取当前显示的 View
- 建议添加View显示时的动画
- 承载各个fragment的容器如果是FragmentContainerView或者Fragment,在调用register注册时会crash HOT 2
- 一个界面能使用多个load吗?两个RV,会造成滑动,好像也没显示loading
- 是不是已经不更新了 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from loadsir.