后台服务

时间:2014-07-22 14:42:27

标签: android service background

我想创建一个小应用程序,它在后台记录数据。所以我尝试使用绑定服务。这工作正常,但如果我关闭应用程序,服务也会停止 所以,我的问题是:用即时服务执行此操作是一种好方法吗? 当app关闭时我怎样才能让服务在后台运行(我想在启动后启动它)?

2 个答案:

答案 0 :(得分:0)

在系统应用程序上查看this link

如果该应用不是系统应用,Android可以在内存不足的情况下销毁该进程,其中包括服务。否则,请检查startForeground()以获取应用程序服务。

答案 1 :(得分:0)

你可以试试这个:

public class ServiceBackground extends Service {


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

    @Override
    public void onCreate() {

        final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor( 1 ); // Number of threads keep in the pool

        executor.scheduleAtFixedRate( new Runnable() {

            @Override
            public void run() {

                Log.i( "LocalService", "service running" );

                if (stopCondition == true ) {
                    executor.shutdownNow();
                }

            }
        }, 1, 1000, TimeUnit.MILLISECONDS );
        super.onCreate();
    }

    @Override
    public int onStartCommand( final Intent intent, final int flags, final int startId ) {
        return Service.START_STICKY;
    }

}

请记住在AndroidManifest.xml中注册该服务

有关ScheduledThreadPoolExecutor

的更多信息

启动服务

public class MainActivity extends Activity {

    @Override
    protected void onCreate( final Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );
        this.setContentView( R.layout.activity_main );

        this.startService( new Intent( this, ServiceBackground.class ) );

    }

}