在后台保持活力服务?

时间:2013-10-31 12:28:37

标签: android service android-activity

对于演示,我在Evert 10秒后打印Toast。使用Service类。

它工作正常,如果我在离开应用程序时处于活动状态,我每10秒钟就会收到一次Toast,服务没有给出o / p。

但是我想那个干杯要么我会杀掉应用程序还是反击这里是代码片段:

ServiceDemo.java

public class ServiceDemo extends Activity {

private Handler myHandler = new Handler();
private Runnable drawRunnable = new Runnable() {

    @Override
    public void run() {
        as();
        myHandler.postDelayed(this, 10000);
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_service_demo);

    myHandler.postDelayed(drawRunnable, 10000);

    startService(new Intent(this, MyService.class));
}

public void as(){
    startService(new Intent(this, MyService.class));
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
}
}

Service.java

public class MyService extends Service {

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

@Override
public void onCreate() {
    Toast.makeText(this, "HOHO Service Created...", Toast.LENGTH_LONG).show();
}

@Override
public void onDestroy() {
}

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

修改1

 moveTaskToBack(true);

我把它放入onBackPressed方法我服务提供o / p如果我不在屏幕上但是当我杀死应用程序时,Service not responding

3 个答案:

答案 0 :(得分:1)

我认为您需要覆盖onStartCommand而不是onStart()

像:

public int onStartCommand(Intent intent, int flags, int startid)
{
   Toast.makeText(this, "Service Started...", Toast.LENGTH_LONG).show();
    return Service.START_STICKY;
}

答案 1 :(得分:0)

我认为AlarmManager就是你想要的。

答案 2 :(得分:0)

你必须使用AlarmManager,这是一个例子:Alarm Manager Example

即使申请被终止,您的任务也将被执行。

但是如果应用程序被用户杀死,则警报将被取消。请参阅此讨论How to create a persistent AlarmManager