您的当前位置:首页正文

android源代码学习开机自启动service

来源:画鸵萌宠网
本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

Android 开机自启动service

import Android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent;

public class yourReceiver extends BroadcastReceiver { @Override

public void onReceive(Context context, Intent intent) { Intent i = new Intent(context, ServiceTest.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startService(i); } }

复制代码ServiceTest 类:package radar.com; import Java.util.Calendar; import android.app.Service; import android.content.Intent; import android.os.Handler; import android.os.IBinder; import android.util.Log;

public class ServiceTest extends Service{ Handler hd1=new Handler();

/**启动activity的开关*/ boolean b;

/**启动一次activity之后的一分钟内将不再重新启动*/ int time;

public static final Intent ACTION_START = null; private static final String TAG = \"TestService\"; @Override

public IBinder onBind(Intent intent) { return null; }

@Override

public boolean onUnbind(Intent i) {

Log.e(TAG, \"============> TestService.onUnbind\"); return false; }

@Override

public void onRebind(Intent i) {

Log.e(TAG, \"============> TestService.onRebind\"); }

@Override

public void onCreate() {

Log.e(TAG, \"============> TestService.onCreate\"); hd1.postDelayed(mTasks, delay);

本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

}

@Override

public void onStart(Intent intent, int startId) { Log.e(TAG, \"============> TestService.onStart\"); }

@Override

public void onDestroy() {

Log.e(TAG, \"============> TestService.onDestroy\");} public void log(){

Calendar c= Calendar.getInstance(); int h=c.getTime().getHours(); int m=c.getTime().getMinutes(); Log.i(\"hour\ Log.i(\"minute\

/**这里的16和10可以自己定义一下 主要是提醒的时间设置,我不想做的太繁琐,所有没有些闹钟,只是用这个测试一下:)*/

if(h==16&&m==10) {

/**为防止持续调用,所以用boolean 变量b做了一个小开关*/ if(!b){

Intent i = new Intent();

i.setClass(ServiceTest.this, showActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startActivity(i); this.stopSelf();

b=true; }

}

/**开关开启后计时60秒,在这60秒之内就不再重新启动activity了,而60秒一过,上面的h和m条件肯定就不成立了*/ if(b){ time+=5; if(time==60){ time=0; b=false; } }

}

/** 速度控制参数(单位豪秒) */ private int delay = 5000; /**

* 控制速度 * */

private Runnable mTasks = new Runnable()

本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

{

public void run() {

log();

hd1.postDelayed(mTasks, delay);

} };

}

复制代码showActivity 类:(次类中啥都没有,就是演示一下activity可以被启动)package radar.com; import radar.com.R;

import android.app.Activity; import android.os.Bundle; import android.view.Window;

import android.view.WindowManager;

public class showActivity extends Activity{ @Override

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

this.requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } }

复制代码下面是很重要的AndroidManifest < ?xml version=\"1.0\" encoding=\"utf-8\"?>

< manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"radar.com\"

android:versionCode=\"1\"

android:versionName=\"1.0\">

< application

android:icon=\"@drawable/icon\" android:label=\"@string/app_name\"> < service

android:name=\".ServiceTest\" android:label=\"@string/app_name\"> < intent-filter>

< action android:name=\"android.intent.action.MAIN\" />

< category android:name=\"android.intent.category.LAUNCHER\" /> < /intent-filter> < /service>

< receiver android:name=\".yourReceiver\" >

本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

< intent-filter>

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

< activity android:name=\".showActivity\" android:label=\"@string/app_name\"

android:configChanges=\"orientation|keyboardHidden|navigation\" android:screenOrientation=\"portrait\"> < intent-filter>

< action android:name=\"android.intent.action.MAIN\" />

< category android:name=\"android.intent.category.LAUNCHER\" /> < /intent-filter> < /activity>

< /application>

< uses-SDK android:minSdkVersion=\"4\" /> < /manifest>

因篇幅问题不能全部显示,请点此查看更多更全内容

Top