android:handle.postDelayed 与 removeCallbacks 用法

本文详细介绍了Android中Handler机制的postDelayed方法和removeCallbacks方法的使用。postDelayed方法用于延迟执行任务,removeCallbacks方法则用于取消已安排的任务。通过具体示例展示了如何在启动活动前设置延迟时间,并在适当时候取消这些任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         postDelayed方法和removeCallbacks方法的使用:

      方法postDelayed的作用是延迟多少毫秒后开始运行,而removeCallbacks方法是删除指定的Runnable对象,使线程对象停止运行。

    postDelayed使用方法:

<strong>  </strong><pre name="code" class="java" style="font-weight: bold;">package com.way.activity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.text.TextUtils;

import com.way.util.PreferenceConstants;
import com.way.util.PreferenceUtils;
import com.way.xx.R;

public class SplashActivity extends FragmentActivity {
	private Handler mHandler;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.splash);
		mHandler = new Handler();
		String password = PreferenceUtils.getPrefString(this,
				PreferenceConstants.PASSWORD, "");
		if (!TextUtils.isEmpty(password)) {
			mHandler.postDelayed(gotoMainAct, 3000);
		} else {
			mHandler.postDelayed(gotoLoginAct, 3000);
		}
	}

	Runnable gotoLoginAct = new Runnable() {

		@Override
		public void run() {
			startActivity(new Intent(SplashActivity.this, LoginActivity.class));
			finish();
		}
	};

	Runnable gotoMainAct = new Runnable() {

		@Override
		public void run() {
			startActivity(new Intent(SplashActivity.this, MainActivity.class));
			finish();
		}
	};
}
removeCallbacks使用方法:

  handler.removeCallbacks(gotoMainAct);



                
08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: FATAL EXCEPTION: main 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: Process: com.android.provision, PID: 2483 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running? 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.view.ViewRootImpl.setView(ViewRootImpl.java:2101) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:546) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:402) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.app.Dialog.show(Dialog.java:366) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.app.AlertDialog$Builder.show(AlertDialog.java:1131) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.widget.VideoView$5.onError(VideoView.java:615) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3640) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:249) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.os.Looper.loop(Looper.java:337) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:9562) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:648) 08-04 10:45:35.399 1000 2483 2483 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1005) 08-04 10:45:35.402 1000 2483 2483 D OOMEventManagerFK: checkEventAndDumpForJE: 0
最新发布
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值