Android后台进程触发代码

时间:2013-11-14 05:07:58

标签: android android-service

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

我已经提出了bootrecieverboot_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>

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

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

2 个答案:

答案 0 :(得分:1)

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

逐一开始

1)创建简单服务

2)创建启动完成后启动服务的Receiver。

3)最后创建警报管理器

答案 1 :(得分: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)在您的服务中启动服务OnStart()中的Alarmmanager。希望这能澄清您的事情