<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);
}
}