直接上代码public class AutoRunService extends Service {
@Override
public void onCreate() {
super.onCreate();
System.out.println("*****onCreate*****");
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("servicestar", "*****onStart*****");
try {
new WSAsyncTask().execute();
} catch (Exception ex) {
Log.i("e", ex.toString());
}
return super.onStartCommand(intent, flags, startId);
} @Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void onDestroy() {
// TODO Auto-generated method stub // objHandler.removeCallbacks(mTasks);
super.onDestroy();
} class WSAsyncTask extends AsyncTask {
String result = ""; @Override
protected Object doInBackground(Object... params) {
//远程服务器获取数据
return null;
} }
有个监听开机启动service的类public class BootBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent mintent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(mintent.getAction())) {
// 启动完成
Intent intent = new Intent(context, Alarmreceiver.class);
intent.setAction("alarm.action");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,intent, 0);
long firstime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
// 10秒一个周期,不停的发送广播
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,
10 * 1000, sender);
}
}
}
Alarmreceiver类public class Alarmreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("alarm.action")) {
Intent i = new Intent();
i.setClass(context, AutoRunService.class);
// 启动service
// 多次调用startService并不会启动多个service 而是会多次调用onStart
context.startService(i);
}
}
}
Manifest.xml<receiver android:name=".BootBroadcast"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" >
</action>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
<receiver
android:name=".Alarmreceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="alarm.action" />
</intent-filter>
</receiver>
<service
android:enabled="true"
android:name=".AutoRunService" >
</service>
这样写好后 在虚拟机测试是有效果的 但安装到手机后就不行了 我直接启动service
startService(new Intent(this, AutoRunService.class));
但也是没有反应的 WSAsyncTask并没有执行到 刚接触android不久 求助Androidservice 手机Java虚拟机
@Override
public void onCreate() {
super.onCreate();
System.out.println("*****onCreate*****");
} @Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("servicestar", "*****onStart*****");
try {
new WSAsyncTask().execute();
} catch (Exception ex) {
Log.i("e", ex.toString());
}
return super.onStartCommand(intent, flags, startId);
} @Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void onDestroy() {
// TODO Auto-generated method stub // objHandler.removeCallbacks(mTasks);
super.onDestroy();
} class WSAsyncTask extends AsyncTask {
String result = ""; @Override
protected Object doInBackground(Object... params) {
//远程服务器获取数据
return null;
} }
有个监听开机启动service的类public class BootBroadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent mintent) {
if (Intent.ACTION_BOOT_COMPLETED.equals(mintent.getAction())) {
// 启动完成
Intent intent = new Intent(context, Alarmreceiver.class);
intent.setAction("alarm.action");
PendingIntent sender = PendingIntent.getBroadcast(context, 0,intent, 0);
long firstime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
// 10秒一个周期,不停的发送广播
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstime,
10 * 1000, sender);
}
}
}
Alarmreceiver类public class Alarmreceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("alarm.action")) {
Intent i = new Intent();
i.setClass(context, AutoRunService.class);
// 启动service
// 多次调用startService并不会启动多个service 而是会多次调用onStart
context.startService(i);
}
}
}
Manifest.xml<receiver android:name=".BootBroadcast"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" >
</action>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
<receiver
android:name=".Alarmreceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="alarm.action" />
</intent-filter>
</receiver>
<service
android:enabled="true"
android:name=".AutoRunService" >
</service>
这样写好后 在虚拟机测试是有效果的 但安装到手机后就不行了 我直接启动service
startService(new Intent(this, AutoRunService.class));
但也是没有反应的 WSAsyncTask并没有执行到 刚接触android不久 求助Androidservice 手机Java虚拟机
解决方案 »
- NDK的SO 文件的生存周期
- 如何扫描手机图片,以文件夹方式分开显示
- 求解handler机制的原理
- android 2.1比1.6 显示的图片大
- android 点对点聊天
- 咨询一个如何通过手机向服务器上传数据的问题?http or sock?
- 求解~android中使用HttpURLConnection联网的问题
- android webview缓存的问题
- android 杀掉进程出现清空掉/data/data下面的TXT文件里面的内容
- Android 拔掉电池 连USB线能启动?
- actionBar添加tabs为什么显示不出来?新手,求解.....
- 安卓模拟器横屏之后 组件为什么没有旋转过来?
以后只要没被stop在启动的话才是startcommand
android:name=".service.MyService"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="com.service.MyService" />
</intent-filter>
</service>这里改一下