0

アクティビティの 1 つに、アクティビティの開始時に開始される実行可能なスレッドがあります。アクティビティが終了してもスレッドを実行し続け、同じアクティビティが再び開始されたときにスレッドを破棄したい。これは可能ですか、それとも目標を達成するために新しいアプローチを試す必要がありますか?

4

1 に答える 1

1

サービスを利用することをお勧めします。彼らはあなたが望む限り生きます

public class MyService extends Service {
private static final String TAG = "MyService";

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

@Override
public void onCreate() {
    Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
    Log.d(TAG, "onCreate");

}

@Override
public void onDestroy() {
    Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
    //stop thread
}

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

}

マニフェストでサービスを宣言する必要があります

<service android:enabled="true" android:name=".MyService" />

でサービスを開始および停止します

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

サービスが実行されているかどうかを確認したい場合は、このコードを使用できます

private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
    if (MyService.class.getName().equals(service.service.getClassName())) {
        return true;
    }
}
return false;

}

于 2012-12-02T23:00:07.090 に答える