后台流程/服务

时间:2014-05-24 16:50:12

标签: android service process background thread-sleep

我正在为我的高中最终的android项目制作一个简单的宏android应用程序,我想制作一个后台进程,每隔一定时间运行(由用户决定)更新当前位置和其他一些事情作为条件开始他们选择的动作,如降低亮度或将智能手机更改为静音模式或其他一些动作....如何制作该过程(或服务),请记住,我是初学者(我甚至不知道流程或服务之间的区别)..如果可以,请用示例代码来回答您的答案。谢谢 ! :d

1 个答案:

答案 0 :(得分:0)

要定期更新/监控/无论如何,您需要从您的应用启动服务。这是一个简短的解释:

http://www.basic4ppc.com/android/forum/threads/creating-a-sticky-service-long-running-background-tasks.27065/

这是漫长而详细的:

http://developer.android.com/guide/components/services.html

您可能需要前台服务,但粘性也可能有效,具体取决于具体要求。这里有一些基本的代码(与第一个链接中描述的方式略有不同,但是相同的一般概念):

在AndroidManifest.xml中声明您的服务:

    <service android:name="Foo"/>

扩展服务类

    public class FooService extends Service {

    ..........

        @Override
    public void onCreate() {

         //if you want this service to run in the foreground so it doesn't get 
             //killed by the system, create a notification, and call this
             startForeground(id, notification); //look at the Service API

             //start your periodic monitoring thread
             ................

        }

        @Override
    public void onDestroy() {

          //do the cleanup here
          ................

    }


    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

          //whatever you need to do when the app calls the start command, 
          //which may happen multiple times, goes here
          ...............

           //this makes sure the process is sticky (see links above for details
           return START_STICKY; 
    }


        ..........


    }

在您的主要活动的onCreate方法中,执行以下操作:

    Context context = getApplicationContext();
    Intent i= new Intent(context, FooService.class);
    i.putExtra(whetever you want to pass to the service)
    context.startService(i); 
    context.bindService(i, connection, 0); //read the API