如何在后台运行应用程序

时间:2014-02-24 07:38:46

标签: android service

您好我正在尝试创建一个可以在后台运行且不会进入PAUSE模式的应用。 我已阅读有关服务并尝试这样做,但dint实际上得到了如何使用Service这样做。 请帮助我提供服务或任何其他方式在后台运行应用程序。

2 个答案:

答案 0 :(得分:3)

要创建在其他当前活动的后台运行的应用程序,需要创建一个服务。服务可以无限期地运行(无限制)或者可以在调用活动的生命周期内运行(有界)。

请注意,服务的生命周期与活动不同,因此具有不同的方法。但是要在应用程序中开始一个服务,调用startService()来调用服务onCreate()方法和onStart()开始运行服务。

https://thenewcircle.com/s/post/60/servicesdemo_using_android_services

来源 http://thenewcircle.com/static/tutorials/ServicesDemo.zip

音乐文件 http://thenewcircle.com/static/tutorials/braincandy.m4a

service class extends Service{
//service methods

@Override
public void onCreate() {
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onCreate");     
    player = MediaPlayer.create(this, R.raw.braincandy);
    player.setLooping(false); // Set looping
}

@Override
public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onDestroy");
    player.stop();
}

@Override
public void onStart(Intent intent, int startid) {
    Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onStart");
    player.start();
}
}

它完美无缺,我也对此进行了测试。

http://developer.android.com/reference/android/app/Service.html

Android: How to periodically send location to a server

keep application running in background

请告诉我是否仍然面临任何问题:)

答案 1 :(得分:2)

尝试以下内容。

以下代码开始新活动。

Intent intent = new Intent(MainActivity.this, AppService.class);
        startService(intent);

   // This function is used to hide your app

        hideApp(getApplicationContext().getPackageName());
        System.out.println("Inside of main");
    }

    private void hideApp(String appPackage) {
        ComponentName componentName = new ComponentName(appPackage, appPackage
                + ".MainActivity");
        getPackageManager().setComponentEnabledSetting(componentName,
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);
    }

所以基本上你可以在AppService

中做任何你想做的事

并在清单文件中将服务类声明为服务而非活动,因此它应该像这样

 <service android:name=".AppService" >
        </service>