小编Dre*_*ale的帖子

使用DPAD快速滚动时,RecyclerView onCreateViewHolder过度调用

我正在亚马逊Fire TV上开发.

因为它是一个电视应用程序(没有触摸),我需要在行的布局内的焦点能够导航.

我有一个非常简单Recyclerview的图像,文字和可聚焦.当我向上或向下按压时,它都会正确滚动和填充,但是我注意到当我导航速度快于滚动可以跟上时,它会创建新的视图(关闭屏幕)并延迟UI.

我创建了一个包含Creation数字的活动.当我慢慢滚动时,最高的创作#是10.但是当我快速滚动时,我会在一秒内获得创作号为60的卡片.这会导致巨大的延迟,并且应用程序会丢失大量帧.我的做法完全错了吗?

使用下面的代码来测试它.

/**
 * Created by sylversphere on 15-04-15.
 */
public class LandfillActivity extends Activity{

private Context context;

private static int ticketNumber;
private static int getTicket(){
    ticketNumber ++;
    return ticketNumber;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    context = this;
    setContentView(R.layout.landfill_activity);
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    GridLayoutManager glm = new GridLayoutManager(context, 2);
    recyclerView.setLayoutManager(glm);
    SickAdapter sickAdapter = new SickAdapter();
    recyclerView.setAdapter(sickAdapter);
}

public class SickViewHolder extends RecyclerView.ViewHolder{
    TextView ticketDisplayer;
    public ImageView imageView;
    public SickViewHolder(View itemView) …
Run Code Online (Sandbox Code Playgroud)

java android amazon-fire-tv

20
推荐指数
2
解决办法
7441
查看次数

在Firebase云功能onWrite完成后,如何让Android客户端回调触发?

所以我在用户页面上,我想让用户在服务器端创建一个帖子但是扇出.

exports.fanoutUpdatePost = functions.database.ref('/post/{postKey}').onWrite(event => {
        var post = event.data.val();

        var fanoutObject = {};

        fanoutObject['/user-post/'+post.userKey+'/post/'+event.params.postKey] = post;
        fanoutObject['/blog-post/'+post.blogKey+'/post/'+event.params.postKey] = post;

       return event.data.adminRef.root.update(fanoutObject);
});
Run Code Online (Sandbox Code Playgroud)

我这样做,所以你可以发布,/post/服务器将自动扇出.问题是我希望客户端显示进度条,直到它被保存为止/user-post/.

但是我的客户端回调在创建帖子后立即触发/post/.


public void addPost(final PostDao post, ProgressBar progressBar) {
    progressBar.setVisibility(View.VISIBLE);

    String key = mDatabase.child(“post”).push().getKey();

    Map<String, Object> postUpdateMap = new HashMap<>();
    postUpdateMap.put(“/post/” +key, post.toMap());

    mDatabase.updateChildren(postUpdateMap, new DatabaseReference.CompletionListener() {
                @Override
                public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) {
                    if(databaseError == null){
                        Log.e(TAG, databaseError);
                    }else{
                        // @@@@@ This executes before server side 
                        // @@@@@ …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-functions

1
推荐指数
1
解决办法
327
查看次数