Android 如何将字符串从mainActivity传递到服务?

Android 如何将字符串从mainActivity传递到服务?,android,string,service,Android,String,Service,如何将在主活动中创建的字符串传递给我的服务? 它是在editText而不是strings.xml中创建的。。。 我是java新手,我找不到它 谢谢 编辑// 我主要有: public class MainActivity extends Activity { private static final String LOG_TAG = "aktivita" ; private Button btnStart, btnStop; public EditText input; public Stri

如何将在主活动中创建的字符串传递给我的服务? 它是在editText而不是strings.xml中创建的。。。 我是java新手,我找不到它

谢谢

编辑//

我主要有:

public class MainActivity extends Activity {

private static final String LOG_TAG = "aktivita" ;
private Button btnStart, btnStop;
public EditText input;
public String filename;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnStart = (Button) findViewById(R.id.btnStart);
    btnStop = (Button) findViewById(R.id.btnStop);
    btnStart.setEnabled(true);
    btnStop.setEnabled(true);
    input = (EditText) findViewById(R.id.editTxt);

    Log.d( LOG_TAG, "ON CREATE" );
}

public void onStartClick(View view) {
    filename = input.getText().toString();
    Intent serviceIntentAcc = new Intent(this, accService.class );
    startService(serviceIntentAcc);
    Intent serviceIntentGyro = new Intent(this, gyroService.class );
    startService(serviceIntentGyro);
    btnStop.setEnabled(true);
    btnStart.setEnabled(false);
    Log.d(LOG_TAG, "ON START CLICK");
}
我想在我的服务中使用文件名字符串。。。 在这里:

我对android和java还不熟悉,但我不太了解它:/有人能解释一下吗?
谢谢你的耐心。

意图是一个很好的方法

public class Service extends IntentService {

private final static String TAG = "a tag";
private final static String GET_POWER_INTENT = "your.intent";

/***
 * Constructor
 */
public Service() {
    super(TAG);     
}

@Override
protected void onHandleIntent(Intent intent) {
    Log.d(TAG, "onHandleIntent");

    if (extras.containsKey("EXTRA_NAME")) { 
        // your string can be retrieved with extras.getString("EXTRE_NAME")
    }


}
}

并发送您的意图:

Intent serviceIntent = new Intent();
    serviceIntent.setClassName(PACKAGE_NAME, CLASS_NAME);
    serviceIntent.setAction("your.intent");
    serviceIntent.putExtra("EXTRA_NAME", "your string");
    context.startService(serviceIntent);

我没有足够的声誉来添加评论

您可以通过intent传递它:

    public class MainActivity extends Activity {

    public static final String FILENAME = "filename";
    private static final String LOG_TAG = "aktivita" ;
    private Button btnStart, btnStop;
    public EditText input;
    public String filename;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnStart = (Button) findViewById(R.id.btnStart);
        btnStop = (Button) findViewById(R.id.btnStop);
        btnStart.setEnabled(true);
        btnStop.setEnabled(true);
        input = (EditText) findViewById(R.id.editTxt);


        Log.d( LOG_TAG, "ON CREATE" );
    }

    public void onStartClick(View view) {
        filename = input.getText().toString();
        Intent serviceIntentAcc = new Intent(this, accService.class );

        // add string to intent(filename example)
        serviceIntentAcc.putExtra(FILENAME, filename);

        startService(serviceIntentAcc);
        Intent serviceIntentGyro = new Intent(this, gyroService.class );
        startService(serviceIntentGyro);
        btnStop.setEnabled(true);
        btnStart.setEnabled(false);
        Log.d(LOG_TAG, "ON START CLICK");
    }
服务:

     @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        // retreive string from intent
        String FileName = intent.getStringExtra(FILENAME);

        try {
            writer = new FileWriter(root + "/" + filename + "acc.txt",true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.d(LOG_TAG, "SERVICE - ON START COMMAND");
        return START_STICKY;
    }

如果您想在服务运行时更新字符串,则需要使用service binder,您可以在本教程中找到更多信息

您可以使用intents。这里解释得很好:字符串值正在变化,这取决于我在editText字段中写的内容。。。这样行吗?我编辑了我的答案,因为我不太明白:/I我知道你不能发表评论,但这本质上是一个答案。只要从你发布的链接中解释解决方案,它就可以作为一个答案。
     @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        // retreive string from intent
        String FileName = intent.getStringExtra(FILENAME);

        try {
            writer = new FileWriter(root + "/" + filename + "acc.txt",true);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Log.d(LOG_TAG, "SERVICE - ON START COMMAND");
        return START_STICKY;
    }