zoukankan      html  css  js  c++  java
  • 团队冲刺第二天

    今天的任务是完成索引卡三:引导页的实现,已完成。
    遇到的问题:通常索引页的倒计时可以跳过,当我写了跳转之后,我发现点击Textview"点击跳过”时进入读书页面跳转了两次。
    思考过程:我来来回回读我写的代码,感觉SplashActivity也finish了,最后我发现,是当onClick时,倒计时没有终止,也就是说,不仅点击时跳转了一次,倒计时结束了还跳转了一次。
    解决方法:在onClick中加入handler.removeMessages(CODE);就可以啦。

    package com.example.fooks;
    import android.Manifest;
    import android.app.Activity;
    import android.content.pm.PackageManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.View;
    import android.widget.TextView;

    import androidx.appcompat.app.AppCompatActivity;
    import androidx.core.app.ActivityCompat;
    import androidx.core.content.ContextCompat;

    import java.lang.ref.WeakReference;

    public class SplashActivity extends Activity {

    public static final int CODE = 1001;
    private TextView mtextView;
    @Override
    protected void onPause() {
        overridePendingTransition(0,0);
        super.onPause();
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (ContextCompat.checkSelfPermission(SplashActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(SplashActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE} ,1);
        }
        setContentView(R.layout.activity_splash);
    
        mtextView = (TextView) findViewById(R.id.text_daojishi);
    
        final MyHandler handler = new MyHandler(this);
        Message message = Message.obtain();
        message.what = CODE;
        message.arg1 = 3000;
        handler.sendMessage(message);
    
        mtextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //跳转
                LoginActivity.start(SplashActivity.this);
                SplashActivity.this.finish();
                handler.removeMessages(CODE);
            }
        });
    }
    
    public static class MyHandler extends Handler{
    
        public final WeakReference<SplashActivity> mWeakReference;
        public MyHandler(SplashActivity activity) {
            mWeakReference = new WeakReference<>(activity);
        }
    
        @Override
        public void handleMessage (Message msg) {
            super.handleMessage(msg);
            SplashActivity activity = mWeakReference.get();
            if (msg.what == CODE) {
                if (activity != null){
                    int time = msg.arg1;
                    activity.mtextView.setText(time/1000+"秒,点击跳过");
    
                    Message message = Message.obtain();
                    message.what = CODE;
                    message.arg1 = time - 1000;
    
                    if(time > 0) {
                        sendMessageDelayed(message,1000);
                    } else {
                        //跳转
                        LoginActivity.start(activity);
                        activity.finish();
                    }
                }
            }
        }
    }
    

    }

  • 相关阅读:
    浅谈Slick(2)- Slick101:第一个动手尝试的项目
    浅谈Slick(1)- 基本功能描述
    Cats(4)- 叠加Free程序运算结果,Stacking monadic result types
    Cats(3)- freeK-Free编程更轻松,Free programming with freeK
    Cats(2)- Free语法组合,Coproduct-ADT composition
    Cats(1)- 从Free开始,Free cats
    Scalaz(59)- scalaz-stream: fs2-程序并行运算,fs2 running effects in parallel
    Scalaz(58)- scalaz-stream: fs2-并行运算示范,fs2 parallel processing
    Scalaz(57)- scalaz-stream: fs2-多线程编程,fs2 concurrency
    Scalaz(56)- scalaz-stream: fs2-安全运算,fs2 resource safety
  • 原文地址:https://www.cnblogs.com/xrj-/p/12722107.html
Copyright © 2011-2022 走看看