Giter Club home page Giter Club logo

cube-sdk's People

Contributors

9468lgy avatar liaohuqiu avatar veverrr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cube-sdk's Issues

新需求

  1. ptr加入上拉加载更多
  2. Tab示例加上数据 类似网易新闻 然后引入缓存机制就完美了

doesnt load the lib

it seems like it doesn't find the lib

Error:Failed to find: in.srain.cube:cube-sdk:1.0.43-SNAPSHOT
<a href="openFile">Open File</a><br><a href="open.dependency.in.project.structure">Open in Project Structure dialog</a>

onLoadError() for ImageLoadHandler

  1. ImageLoadHandler should have a method onLoadError() which will be called when some errors arise when loading the image.
  2. DefaultImageLoadHandler should implement onLoadError()

短时间内重复启动引起ANR

使用gradle直接引入sdk:
compile('in.srain.cube:cube-sdk:1.0.44.16-SNAPSHOT@aar') {
exclude group: 'in.srain.cube', module: 'clog'
}
compile('in.srain.cube:ultra-ptr:1.0.8.3-SNAPSHOT@aar') {
exclude group: 'in.srain.cube', module: 'clog'
}

初始化代码直接复制:https://github.com/liaohuqiu/android-cube-app/blob/master/src/in/srain/cube/demo/app/CubeDemoApplication.java

在fragment中使用的,fragment直接复制:https://github.com/liaohuqiu/android-cube-app/blob/master/src/in/srain/cube/demo/ui/loadmore/LoadMoreListViewFragment.java

出现bug:应用短时间内重复启动会有一定概率anr,整个应用会报错退出。

log:
03-15 20:07:46.428 30239-30732/com.skydragron.wechatfriends I/System.out﹕ [CDS]rx timeout:0
03-15 20:07:46.428 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: interp stack at 0x52d67000
03-15 20:07:46.428 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: created from interp
03-15 20:07:46.429 30239-30239/com.skydragron.wechatfriends D/dalvikvm﹕ start new thread
03-15 20:07:46.435 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: notify debugger
03-15 20:07:46.435 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16 (cube-simple-request-manager): calling run()
03-15 20:07:46.436 30239-30733/com.skydragron.wechatfriends I/System.out﹕ [CDS]rx timeout:0
03-15 20:07:46.794 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: exiting
03-15 20:07:46.794 30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: bye!
03-15 20:07:46.800 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ create interp thread : stack size=32KB
03-15 20:07:46.801 30239-30730/com.skydragron.wechatfriends D/cube-disk-cache-provider﹕ 1000, flushDiskCacheAsyncWithDelay
03-15 20:07:46.801 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ create new thread
03-15 20:07:46.801 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ new thread created
03-15 20:07:46.802 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ update thread list
03-15 20:07:46.803 30239-30732/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: exiting
03-15 20:07:46.803 30239-30732/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: bye!
03-15 20:07:46.838 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: interp stack at 0x52d67000
03-15 20:07:46.838 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: created from interp
03-15 20:07:46.838 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ start new thread
03-15 20:07:46.838 30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=13: exiting
03-15 20:07:46.838 30239-30731/com.skydragron.wechatfriends W/dalvikvm﹕ threadid=13: thread exiting with uncaught exception (group=0x41889a58)
03-15 20:07:46.839 30239-30731/com.skydragron.wechatfriends E/AndroidRuntime﹕ FATAL EXCEPTION: simple-executor-pool-1-thread-27
java.lang.IllegalStateException
at in.srain.cube.diskcache.CacheEntry.newOutputStream(CacheEntry.java:104)
at in.srain.cube.diskcache.CacheEntry.setString(CacheEntry.java:86)
at in.srain.cube.cache.DiskCacheProvider.write(DiskCacheProvider.java:59)
at in.srain.cube.cache.CacheManager$2.run(CacheManager.java:96)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:838)
03-15 20:07:46.842 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: notify debugger
03-15 20:07:46.842 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15 (simple-executor-pool-1-thread-28): calling run()
03-15 20:07:46.911 30239-30241/com.skydragron.wechatfriends D/dalvikvm﹕ GC_CONCURRENT freed 519K, 11% free 9318K/10371K, paused 26ms+21ms, total 134ms
03-15 20:07:46.949 30239-30239/com.skydragron.wechatfriends I/SurfaceTextureClient﹕ STC::queueBuffer fps:33.93, dur:1002.05, max:121.00, min:10.86
03-15 20:07:47.100 30239-30239/com.skydragron.wechatfriends V/InputMethodManager﹕ focusOut: android.widget.ListView@42205f70 mServedView=android.widget.ListView@42205f70 winFocus=false
03-15 20:07:47.160 30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 0)
03-15 20:07:47.185 30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 1)
03-15 20:07:47.193 30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 0)
03-15 20:07:47.802 30239-30730/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=11: exiting
03-15 20:07:47.802 30239-30730/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=11: bye!
03-15 20:07:47.844 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: exiting
03-15 20:07:47.844 30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: bye!

短时间内重复启动引起ANR

使用gradle直接引入sdk:
compile('in.srain.cube:cube-sdk:1.0.44.16-SNAPSHOT@aar') {
exclude group: 'in.srain.cube', module: 'clog'
}
compile('in.srain.cube:ultra-ptr:1.0.8.3-SNAPSHOT@aar') {
exclude group: 'in.srain.cube', module: 'clog'
}

初始化代码直接复制:https://github.com/liaohuqiu/android-cube-app/blob/master/src/in/srain/cube/demo/app/CubeDemoApplication.java

在fragment中使用的,fragment直接复制:https://github.com/liaohuqiu/android-cube-app/blob/master/src/in/srain/cube/demo/ui/loadmore/LoadMoreListViewFragment.java

出现bug:应用短时间内重复启动会有一定概率anr,整个应用会报错退出。

log:

03-15 20:07:46.428  30239-30732/com.skydragron.wechatfriends I/System.out﹕ [CDS]rx timeout:0
03-15 20:07:46.428  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: interp stack at 0x52d67000
03-15 20:07:46.428  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: created from interp
03-15 20:07:46.429  30239-30239/com.skydragron.wechatfriends D/dalvikvm﹕ start new thread
03-15 20:07:46.435  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: notify debugger
03-15 20:07:46.435  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16 (cube-simple-request-manager): calling run()
03-15 20:07:46.436  30239-30733/com.skydragron.wechatfriends I/System.out﹕ [CDS]rx timeout:0
03-15 20:07:46.794  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: exiting
03-15 20:07:46.794  30239-30733/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=16: bye!
03-15 20:07:46.800  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ create interp thread : stack size=32KB
03-15 20:07:46.801  30239-30730/com.skydragron.wechatfriends D/cube-disk-cache-provider﹕ 1000, flushDiskCacheAsyncWithDelay
03-15 20:07:46.801  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ create new thread
03-15 20:07:46.801  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ new thread created
03-15 20:07:46.802  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ update thread list
03-15 20:07:46.803  30239-30732/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: exiting
03-15 20:07:46.803  30239-30732/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: bye!
03-15 20:07:46.838  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: interp stack at 0x52d67000
03-15 20:07:46.838  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: created from interp
03-15 20:07:46.838  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ start new thread
03-15 20:07:46.838  30239-30731/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=13: exiting
03-15 20:07:46.838  30239-30731/com.skydragron.wechatfriends W/dalvikvm﹕ threadid=13: thread exiting with uncaught exception (group=0x41889a58)
03-15 20:07:46.839  30239-30731/com.skydragron.wechatfriends E/AndroidRuntime﹕ FATAL EXCEPTION: simple-executor-pool-1-thread-27
    java.lang.IllegalStateException
            at in.srain.cube.diskcache.CacheEntry.newOutputStream(CacheEntry.java:104)
            at in.srain.cube.diskcache.CacheEntry.setString(CacheEntry.java:86)
            at in.srain.cube.cache.DiskCacheProvider.write(DiskCacheProvider.java:59)
            at in.srain.cube.cache.CacheManager$2.run(CacheManager.java:96)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
            at java.lang.Thread.run(Thread.java:838)
03-15 20:07:46.842  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: notify debugger
03-15 20:07:46.842  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15 (simple-executor-pool-1-thread-28): calling run()
03-15 20:07:46.911  30239-30241/com.skydragron.wechatfriends D/dalvikvm﹕ GC_CONCURRENT freed 519K, 11% free 9318K/10371K, paused 26ms+21ms, total 134ms
03-15 20:07:46.949  30239-30239/com.skydragron.wechatfriends I/SurfaceTextureClient﹕ [STC::queueBuffer] (this:0x416a5c00) fps:33.93, dur:1002.05, max:121.00, min:10.86
03-15 20:07:47.100  30239-30239/com.skydragron.wechatfriends V/InputMethodManager﹕ focusOut: android.widget.ListView@42205f70 mServedView=android.widget.ListView@42205f70 winFocus=false
03-15 20:07:47.160  30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 0)
03-15 20:07:47.185  30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 1)
03-15 20:07:47.193  30239-30239/com.skydragron.wechatfriends D/OpenGLRenderer﹕ Flushing caches (mode 0)
03-15 20:07:47.802  30239-30730/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=11: exiting
03-15 20:07:47.802  30239-30730/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=11: bye!
03-15 20:07:47.844  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: exiting
03-15 20:07:47.844  30239-30734/com.skydragron.wechatfriends D/dalvikvm﹕ threadid=15: bye!

DefaultImageResizer

DefaultImageResizer 49行:
final int halfHeight = originWidth / 2;
final int halfWidth = originHeight / 2;
是否应该是
final int halfHeight = originHeight / 2;
final int halfWidth = originWidth / 2;

Error in downloadBitmap

I used CubeImageView.loadImage as follow:
cubeImageView.loadImage(imageLoader,"http://imgd.wbiao.cn/201202/01/7789_50670.jpg");

but when i turn off network,I get these error:
Error in downloadBitmap - java.net.UnknownHostException: Unable to resolve host "imgd.wbiao.cn": No address associated with hostname
1 0x0 download fail: 56bbce4e4d50168ec7a5d717c644b1f4
1 0x0 fetch bitmap fail. file cache key: 56bbce4e4d50168ec7a5d717c644b1f4

优化建议

Cube ImageLoader真心强大,赞!如果能够支持加载指定的本地图片就更完美了,例如支持file:///sdcard/test/image.jpg !

关于Cube网络请求调用缓存的BUG

在CacheAbleRequest类中, public void onRequestFail(FailData failData) {}方法中的
if(null != this.mHandler) {
this.mHandler.onRequestFail(failData);
if(this.mCacheData != null && !this.cacheIsDisabled() && !this.mUseCacheAnyway) {
this.notifyRequestFinish(CacheAbleRequest.ResultType.USE_CACHE_ON_FAIL, this.mCacheData, true);
}
}
这段代码在满足条件的情况下会执行onRequestFail和notifyRequestFinish,导致回调时执行onRequestFail和onCacheAbleRequestFinish方法。对于APP来说判断不好使用,既执行了失败,又成功返回了结果。如果在不影响其他功能的情况下,建议改为 if(null != this.mHandler) {

            if(this.mCacheData != null && !this.cacheIsDisabled() && !this.mUseCacheAnyway) {
                this.notifyRequestFinish(CacheAbleRequest.ResultType.USE_CACHE_ON_FAIL, this.mCacheData, true);
            }else{
                this.mHandler.onRequestFail(failData);
             }
        }

请求的timeout问题

请求超时以后,并没有把请求取消掉,请求完成以后还是会回调onRequestFinish,这个是bug还是就这么设计的?

再按一次退出问题

CubeFragmentActivity中148行
if (!mCloseWarned && closeWarningHint != null && closeWarningHint.length() == 0) {
最后的判断是否应该是">"?

Fragment的大小

CubeFragmentActivity类的goToThisFragment方法中
if (mCurrentFragment != null) {
if(mCurrentFragment != fragment){
mCurrentFragment.onLeave();
}else{
return;
}
}
这样写是不是好点,当重复添加时避免按返回键出问题(例如重复添加了5次,需要按返回键5次才出再按一次退出)
TitleBaseFragment类的onCreateView方法中
ViewGroup view = (ViewGroup) inflater.inflate(getFrameLayoutId(), container,false);这样就能避免CubeFragmentActivity中添加的Fragment的高度没显示全屏问题

setImageRounded 失效

setImageFadeIn(false);
setImageRounded(true,xx) ;

这两个方法同时调用时,圆角效果会失效

goToThisFragment 里面隐藏的bug

对于以下应用场景:
A-fragment-1 ----> B-fragment -----> A-fragment-2
其中A-fragment-1和A-fragment-2是同一个fragment文件
在需要push A-fragment-2时,就会发生重用A-fragment-1的情况,出现该问题的原因是getFragmentTag这个方法,导致
CubeFragment fragment = (CubeFragment) fm.findFragmentByTag(fragmentTag);
获取上次的fragment 实例

protected String getFragmentTag(FragmentParam param) {
StringBuilder sb = new StringBuilder(param.cls.toString());
return sb.toString();
}

private void goToThisFragment(FragmentParam param) {
int containerId = getFragmentContainerId();
Class<?> cls = param.cls;
if (cls == null) {
return;
}
try {
String fragmentTag = getFragmentTag(param);
FragmentManager fm = getSupportFragmentManager();
if (DEBUG) {
CLog.d(LOG_TAG, "before operate, stack entry count: %s", fm.getBackStackEntryCount());
}
CubeFragment fragment = (CubeFragment) fm.findFragmentByTag(fragmentTag);
if (fragment == null) {
fragment = (CubeFragment) cls.newInstance();
}
if (mCurrentFragment != null && mCurrentFragment != fragment) {
mCurrentFragment.onLeave();
}
fragment.onEnter(param.data);

        FragmentTransaction ft = fm.beginTransaction();
        if (fragment.isAdded()) {
            if (DEBUG) {
                CLog.d(LOG_TAG, "%s has been added, will be shown again.", fragmentTag);
            }
            ft.show(fragment);
        } else {
            if (DEBUG) {
                CLog.d(LOG_TAG, "%s is added.", fragmentTag);
            }
            ft.add(containerId, fragment, fragmentTag);
        }
        mCurrentFragment = fragment;

        ft.addToBackStack(fragmentTag);
        ft.commitAllowingStateLoss();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    mCloseWarned = false;
}

关于上拉加载

我使用了LoadMoreListViewContainer来做上拉加载,但是发现貌似只有自动加载更多,以及点击加载更多,而没有上拉加载更多(像下拉刷新那样子,有一个拉上去的效果)?

缓存时间

qq 20150721143818
qq 20150721144013
操作步骤:打开界面有网情况下正常请求获取数据后,关闭网络,3S后重新请求数据返回type是USE_CACHE_NOT_EXPIRED

新浪图片压缩问题

正常情况下,从新浪获取的图片没问题。

但是,当从新浪请求成千上万张图片时,少量图片会被压缩成gzip传输,所以,demo显示这些图片是红色方块。

希望能改进。谢谢

请教一个关于该sdk设计**的问题

拜读过部分代码,想问下在mints.base包下

为什么是用继承以及抽象的方式来进行封装

而不用组合和接口的形式封装,这样不是更灵活吗

是出于什么考虑呢?请赐教

crash

Process: in.srain.cube.sample, PID: 30597
java.lang.NullPointerException
        at android.widget.Toast.<init>(Toast.java)
        at android.widget.Toast.makeText(Toast.java)
        at in.srain.cube.sample.ui.fragment.imagelist.GridListViewFragment$2$1.onData(GridListViewFragment.java:64)
        at in.srain.cube.sample.data.DemoRequestData$4.onCacheAbleRequestFinish(DemoRequestData.java:109)
        at in.srain.cube.sample.data.DemoRequestData$4.onCacheAbleRequestFinish(DemoRequestData.java:1)
        at in.srain.cube.request.CacheAbleRequest.notifyRequestFinish(CacheAbleRequest.java:228)
        at in.srain.cube.request.CacheAbleRequest.onRequestSuccess(CacheAbleRequest.java:70)
        at in.srain.cube.request.SimpleRequestManager$1.handleMessage(SimpleRequestManager.java:30)
        at android.os.Handler.dispatchMessage(Handler.java)
        at android.os.Looper.loop(Looper.java)
        at android.app.ActivityThread.main(ActivityThread.java)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
        at dalvik.system.NativeStart.main(Native Method)

Make displaying image faster.

If necessary, cube-sdk will download image into memory and display it. Then cache it into disk in a background thread.

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.