Android实现开机自启动Service
2013-05-24 11:15
190 查看
首先做一个监听器:
然后再做一个service:
做一个主程序:
后在androidmenfest.xml中注册一下接受广播器和服务以及开通权限:
接收广播器:
服务:
public class StartBroadcastReceiver extends BroadcastReceiver{ private static final String ACTION = "android.intent.action.BOOT_COMPLETED"; public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ACTION)){ Intent i= new Intent(Intent.ACTION_RUN); i.setClass(context, TService.class); context.startService(i); } } }
然后再做一个service:
package com.testService; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.Handler; import android.os.IBinder; import android.util.Log; public class TService extends Service { /** * 创建Handler对象,作为进程传递postDelayed之用 */ private Handler objHandler = new Handler(); private int intCounter = 0; private static final String TAG = "TService"; private NotificationManager notificationManager; private Runnable mTasks = new Runnable() { public void run() { intCounter++; Log.i("HIPPO", "Counter:" + Integer.toString(intCounter)); objHandler.postDelayed(mTasks, 1000); } }; public void onCreate() { Log.d(TAG, "============> TService.onCreate"); notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); showNotification(); super.onCreate(); } public void onStart(Intent intent, int startId) { Log.i(TAG, "============> TService.onStart"); objHandler.postDelayed(mTasks, 1000); super.onStart(intent, startId); } public IBinder onBind(Intent intent) { Log.i(TAG, "============> TService.onBind"); return null; } public class LocalBinder extends Binder { public TService getService() { return TService.this; } } public boolean onUnbind(Intent intent) { Log.i(TAG, "============> TService.onUnbind"); return false; } public void onRebind(Intent intent) { Log.i(TAG, "============> TService.onRebind"); } public void onDestroy() { Log.i(TAG, "============> TService.onDestroy"); notificationManager.cancel(R.string.service_start); objHandler.removeCallbacks(mTasks); super.onDestroy(); } private void showNotification() { Notification notification = new Notification(R.drawable.icon, "SERVICE START", System.currentTimeMillis()); Intent intent = new Intent(this, testService.class); intent.putExtra("FLG", 1); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.setLatestEventInfo(this, "SERVICE", "SERVICE START", contentIntent); notificationManager.notify(R.string.service_start, notification); } }
做一个主程序:
package com.testService; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class testService extends Activity { private Button button01; private Button button02; private int flg; private Intent tsIntent; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button01 = (Button)findViewById(R.id.Button01); button02 = (Button)findViewById(R.id.Button02); tsIntent = this.getIntent(); Bundle bundle = tsIntent.getExtras(); if (bundle == null){ flg = 1; DisplayToast(this,"Service Start",2); startService(); finish(); }else{ DisplayToast(this,"Service Stop",2); stopService(); finish(); } button01.setOnClickListener(Listener01); button02.setOnClickListener(Listener02); } Button.OnClickListener Listener01 = new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub startService(); } }; Button.OnClickListener Listener02 = new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub stopService(); } }; private void startService() { Intent i = new Intent(testService.this, TService.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); this.startService(i); } private void stopService() { Intent i = new Intent(testService.this, TService.class); this.stopService(i); } public static void DisplayToast(Context context , String str , int time){ if (time == 1){ //短时间显示Toast Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); }else if (time == 2){ //长时间显示Toast Toast.makeText(context, str, Toast.LENGTH_LONG).show(); } } }
后在androidmenfest.xml中注册一下接受广播器和服务以及开通权限:
接收广播器:
<receiver android:name=".StartBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
服务:
<service android:name=".TService" android:label="TService" android:icon="@drawable/icon" android:enabled="true" android:exported="true" android:process=":remote"> </service>
相关文章推荐
- Android如何实现开机自启动Service
- android开机自启动的后台Service的实现
- android开机自启动的后台Service的实现 .
- Android实现开机自启动Service
- Android实现开机自启动Service
- Android实现开机自启动Service
- android开机自启动的后台Service的实现
- Android实现开机自启动Service
- Android 实现开机自启动 Service
- Android开机自启动service,并不启动activity
- 实现 Android 应用在开机时自启动
- Android程序开机自启动的实现方式
- 实现 Android 应用在开机时自启动
- android如何实现开机自动启动Service或app
- android 开机自启动实现
- android如何实现开机自动启动Service或app
- android开机自启动,service
- 【Android】开机自启动Service
- Android实现开机自启动(二)——启动一个activity
- Android如何实现开机自动启动Service