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