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

android 写了个service 在虚拟机测试可以启动 安装到手机后就启动不了 启动了也没有执行方法

2017-01-02 00:36 603 查看
直接上代码
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不久 求助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐