团队冲刺第二天

今天的任务是完成索引卡三:引导页的实现,已完成。
遇到的问题:通常索引页的倒计时可以跳过,当我写了跳转之后,我发现点击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();
                }
            }
        }
    }
}

}

posted @ 2020-04-17 19:45  藻类植物  阅读(93)  评论(0编辑  收藏  举报