Android入門筆記之開機程序自啓動

<1>簡介

研究下如何開機自動啓動。

<2>關鍵步驟

使用一個類MyStartupReceiver繼承BroadcastReceiver來監聽android的系統啓動時發出的系統廣播信息android.intent.action.BOOT_COMPLETED,然後啓動myService.class這個Service。然後在前臺啓動一個activity,連接到那個service,如果能連接上說明該service已開機啓動。

<3>出現的問題

       無

<4>代碼及解釋

AndroidManifest.xml:

<receiver android:name="com.test.BroadReceiver">
        	<intent-filter >
        	    <action android:name="gmj"/>
        	    <category android:name="android.intent.category.LAUNCHER" />
        	</intent-filter>
        </receiver>
        <receiver android:name="com.service.MyStartupReceiver">  
		  <intent-filter>
		     <action android:name="android.intent.action.BOOT_COMPLETED"/>
		  </intent-filter>
		</receiver>

autoStartActivity.java:

public class autoStartActivity extends Activity{
	/**   
	 * @ProjectName:  [androidtest] 
	 * @Package:      [com.service.autoStartActivity.java]  
	 * @ClassName:    [autoStartActivity]   
	 * @Description:    
	 * @Author:       [gmj]   
	 * @CreateDate:   [2013-9-11 下午11:34:57]   
	 * @Version:      [v1.0] 
	 */
	ServiceConnection sc;
    OnClickListener listener;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_service);
        sc=new ServiceConnection()
        {
			@Override
			public void onServiceConnected(ComponentName name, IBinder service) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void onServiceDisconnected(ComponentName name) {
				// TODO Auto-generated method stub
				
			}
        };
        
        listener=new OnClickListener()
        {
			@Override
			public void onClick(View v) {
				Intent intent=new Intent(autoStartActivity.this,myService.class);
				switch(v.getId())
				{
				  case R.id.serviceStart://Start Service
				    startService(intent);
				  break;
				  case R.id.serviceStop://Stop Service
					stopService(intent);
			      break;
				  case R.id.serviceBind://Bind Service
				    bindService(intent,sc,BIND_AUTO_CREATE);
				  break;
				  case R.id.serviceUnBind://Unbind Service
					    unbindService(sc);
				  break;
				}
			}
        };
        
        this.findViewById(R.id.serviceStart).setOnClickListener(listener);
        this.findViewById(R.id.serviceStop).setOnClickListener(listener);
        this.findViewById(R.id.serviceBind).setOnClickListener(listener);
        this.findViewById(R.id.serviceUnBind).setOnClickListener(listener);
    }
}

myService.java:

public class myService extends Service{

	TaskThread task;
	/**   
	 * @ProjectName:  [androidtest] 
	 * @Package:      [com.service.myService.java]  
	 * @ClassName:    [myService]   
	 * @Description:    
	 * @Author:       [gmj]   
	 * @CreateDate:   [2013-9-8 上午9:29:22]   
	 * @Version:      [v1.0] 
	 */

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		Log.d("MyService", "=========onBind=========");
		return null;
	}
	@Override
	public boolean onUnbind(Intent arg0)
	{
		Log.d("MyService", "=========onUnbind=========");
		return super.onUnbind(arg0);
	}
	
	@Override
	public void onRebind(Intent arg0)
	{
		super.onRebind(arg0);		
		Log.d("MyService", "=========onRebind=========");		
	}	

	@Override
	public void onCreate()
	{
		super.onCreate();
		Log.d("MyService", "=========onCreate=========");	
		task = new TaskThread();
		task.start();
	}
	
	@Override
	public void onDestroy()
	{
		super.onDestroy();
		Log.d("MyService", "=========onDestroy=========");
		task.flag = false;
	}
}

MyStartupReceiver.java:

public class MyStartupReceiver extends BroadcastReceiver{
	@Override
	public void onReceive(Context arg0, Intent arg1) {
		// TODO Auto-generated method stub
		Intent intent=new Intent(arg0,myService.class);
		arg0.startService(intent);
	}
}





發佈了29 篇原創文章 · 獲贊 4 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章