您的位置:首页 > 移动开发 > Android开发

Android入门笔记之开机程序自启动

2013-09-13 22:24 357 查看
<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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: