0

デモでは、Evert 10 秒後にトーストを印刷します。Serviceクラスを使用しています。

アプリを離れるときにアクティビティを使用している場合、10秒ごとにトーストを取得しています。サービスは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 メソッドに入れます I Service は、画面に表示されていない場合は o/p を返しますが、アプリを強制終了すると、Service not responding

4

3 に答える 3

1

onStart() の代わりに onStartCommand をオーバーライドする必要があると思います

お気に入り:

public int onStartCommand(Intent intent, int flags, int startid)
{
   Toast.makeText(this, "Service Started...", Toast.LENGTH_LONG).show();
    return Service.START_STICKY;
}
于 2013-10-31T12:35:44.963 に答える
0

AlarmManagerはあなたが望むものだと思います。

于 2013-10-31T12:31:29.130 に答える
0

AlarmManager を使用する必要があります。例を次に示します。Alarm Manager Example

アプリケーションが終了しても、タスクは実行されます。

ただし、アプリケーションがユーザーによって強制終了された場合、アラームはキャンセルされます。このディスカッションを参照してください永続的な AlarmManager を作成する方法

于 2013-10-31T12:48:05.253 に答える