手机影音1--SplashActivity
Posted 安卓笔记侠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手机影音1--SplashActivity相关的知识,希望对你有一定的参考价值。
/** * 1.设置被启动的Activity为单例模式 */ public class SplashActivity extends Activity { /** * 是否已经启动主页面 */ private boolean isStartMain = false; private static final String TAG = SplashActivity.class.getSimpleName(); private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); handler.postDelayed(new Runnable() { @Override public void run() { //这个方法执行是在主线程 Log.e(TAG, "当前线程的名称:" + Thread.currentThread().getName()); startMainActivity(); } }, 3000); } /** * 启动主页面 */ private void startMainActivity() { if(!isStartMain){ isStartMain = true; Intent intent = new Intent(this,MainActivity.class); startActivity(intent); finish();//关闭当前页面 } } @Override protected void onDestroy() { // isStartMain = true; handler.removeCallbacksAndMessages(null);//把消息队列里面的所有回调和消息移除 super.onDestroy(); } @Override public boolean onTouchEvent(MotionEvent event) { startMainActivity(); return super.onTouchEvent(event); } }
1.Handler在哪个线程new,Runnable就在哪个线程执行
2.有一个bug,启动了多次Activity,如何解决?
方法①.设置为启动的Activity只能是单例。
在功能清单文件android:launchMode="singleTask"
方法②.从源头上控制,执行代码只一次
private boolean isStartMain = false; /** * 跳转到主页面,并且把当前页面关闭掉 */ private void startMainActivity() { if(!isStartMain){ isStartMain = true; Intent intent = new Intent(this,MainActivity.class); startActivity(intent); //关闭当前页面 finish(); } }
以上是关于手机影音1--SplashActivity的主要内容,如果未能解决你的问题,请参考以下文章
手机影音第十天,控制屏幕上下滑动改变音量变化,监听物理键改变音量
手机影音第十四天,本地音乐列表的展示与播放(利用视频播放的布局)