整理一下学来的两种方法:

显示欢迎画面方法如下:

首先新建一个Activity作为欢迎画面,将Manifest.xml中本来在Mainctivity注册文件下的

            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>

放到新注册的Activity下,使其首先启动。

Activity的代码如下:

import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Window;//欢迎界面@SuppressLint("HandlerLeak")public class WelcomeActivity extends Activity{        private static final String S = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏                setContentView(R.layout.welcome);        //启动线程        Thread mt = new Thread(mThread);        mt.start();    }        private Handler mHandler = new Handler(){                @Override        public void handleMessage(Message msg) {            // TODO Auto-generated method stub            super.handleMessage(msg);            if((String)msg.obj == S) {                //跳转                Intent intent = new Intent();                intent.setClass(WelcomeActivity.this, MainActivity.class);                WelcomeActivity.this.startActivity(intent);                 finish();            }        }    };        Runnable mThread = new Runnable() {        @Override        public void run() {            // TODO Auto-generated method stub            Message msg = mHandler.obtainMessage();            //延时3秒            try {                Thread.sleep(3000);            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }            msg.obj = S;            mHandler.sendMessage(msg);        }            };}

首先使窗口全屏,显示画面,然后打开一个线程,在线程中延时3秒发送一个消息,在消息处理中跳转到Mainctivity并且关闭WelcomeActivity。这样就实现了开机欢迎画面出现3秒的效果。

使程序自启动的方法如下:

首先增加接收广播机制,用来接收系统启动时的广播,接收到之后启动程序:

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class BootBroadcastReceiver extends BroadcastReceiver {    static final String action_boot="android.intent.action.BOOT_COMPLETED";     @Override    public void onReceive(Context context, Intent intent) {        if (intent.getAction().equals(action_boot)){            Intent ootStartIntent=new Intent(context,WelcomeActivity.class);            ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);            context.startActivity(ootStartIntent);        }     } }

添加权限:

    <uses-permission         android:name="android.permission.RECEIVE_BOOT_COMPLETED">    </uses-permission>

注册:

        <receiver             android:name=".BootBroadcastReceiver"            android:exported="false">            <intent-filter>                <action android:name="android.intent.action.BOOT_COMPLETED" />                <category android:name="android.intent.category.HOME" />            </intent-filter>        </receiver>

注:这种系统自启动的方法完全在应用中实现,要等系统完全启动出现主界面之后再启动,就跟360安全卫士这样的开机启动功能。如果使自己的应用代替系统自己的Launcher,开机直接进入程序或者甚至自定义开机画面,则要在Android源码中修改。

更多相关文章

  1. Android Camera子系统之源代码View
  2. Android 的系统属性(SystemProperties)设置分析
  3. (2) 搭建 Android 系统开发环境
  4. android:sharedUserId="android.uid.system" 使用系统签名+SNTP
  5. Android 系统启动过程简略分析
  6. android图形系统
  7. Android - 多线程 - AsyncTask
  8. android Q 显示系统(一) VSync

随机推荐

  1. Android Crash实例分析与解决
  2. Android 手势锁的实现 让自己的应用更加
  3. 《Pro Android Graphics》读书笔记之第三
  4. android播放本地工程里的音乐和视频的方
  5. RK3288 android7.1 蓝牙MAC地址获取
  6. Android中判断应用是否第一次打开
  7. Android Native C 之 Helloworld的四种编
  8. android ListView 刷新数据,加载时遇到的
  9. android recyclerView 设置item间的间距
  10. Android 唤起app的多种方式