0

我需要一个示例代码或示例来显示服务的正确实现。我想在一段时间后运行代码,比如 3-4 小时。并且该过程应该在后台运行,甚至设备也会重新启动。

我想出了选项bootrecieverand boot_completed,但真的不知道如何实现它或async运行进程的功能以在间隔后一次又一次地运行。

显现

<service
            android:name=".Myservice"
            android:label="My Service" >
            <intent-filter>
                <action android:name="com.app.ader.Myservice" />
            </intent-filter>
        </service>


        <receiver android:name="com.app.ader.StartMyServiceAtBootReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

我的服务.java

public class Myservice extends Service {

    String tag="TestService";
       @Override
       public void onCreate() {
           super.onCreate();
           Toast.makeText(this, "Service created...", Toast.LENGTH_LONG).show();      
           Log.i(tag, "Service created...");
       }

       @Override
       public void onStart(Intent intent, int startId) {      
           super.onStart(intent, startId);  
           Log.i(tag, "Service started...");
       }
       @Override
       public void onDestroy() {
           super.onDestroy();
           Toast.makeText(this, "Service destroyed...", Toast.LENGTH_LONG).show();
       }

       @Override
       public IBinder onBind(Intent intent) {
           return null;
       }
    }

StartMyServiceAtBootReceiver.java

public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, Myservice.class);
        context.startService(startServiceIntent);
    }
}

我的服务在启动后运行......但我什至需要在安装应用程序后运行服务。不知道如何实现该 nd 以及警报管理器???间隔 3-4 小时

4

2 回答 2

1

你走在正确的道路上。为代码执行创建服务。还要创建一个在启动完成时触发的接收器,然后从中启动服务。也可以使用Alarm Manager 的setRepeating方法来重复调用服务。

一一开始

1) 创建简单服务

2) 创建启动完成后启动服务的接收器。

3) 最后创建报警管理器

于 2013-11-14T05:39:06.167 回答
0

1)在你的元素中:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

2) 在您的元素中(确保为您的 BroadcastReceiver 使用完全限定的 [或相对] 类名):

<receiver android:name="com.example.MyBroadcastReceiver">  
    <intent-filter>  
        <action android:name="android.intent.action.BOOT_COMPLETED" />  
    </intent-filter>  
</receiver>

在 MyBroadcastReceiver.java 中:

package com.example;

public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Intent startServiceIntent = new Intent(context, MyService.class);
        startServiceIntent.addaction("com.app.ader.Myservice");
        context.startService(startServiceIntent);
    }
}

3)在您的服务内启动 Service OnStart() 中的警报管理器。希望这能澄清您的事情

于 2013-11-14T06:21:02.037 回答