0

からサービスを開始するコードを書き AsyncTaskました。サービスが開始されたことをデバッグ モードで確認できます。

バックグラウンドでサービスを開始するためのコードAsyncTaskは次のとおりです。

protected String doInBackground(String... params) {
//starts service number activite
MyResultReceiver resultReceiver = new MyResultReceiver(null);
Intent  intent = new Intent(context, MyService.class);
intent.putExtra("receiver", resultReceiver);
context.startService(intent);

サービスは次のとおりです。

    public class MyService extends Service{


    ResultReceiver resultReceiver;


       @Override
     public int onStartCommand(Intent intent, int flags, int startId) {

       //resultReceiver = intent.getParcelableExtra("receiver");


        resultReceiver = intent.getParcelableExtra("receiver");
        Bundle data = new Bundle();
          data.putString("key",getActivityUrl() );
       resultReceiver.send(2, data);

       resultReceiver.send(2,null);
     return START_STICKY;
     }



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

     public String getActivityUrl() {
   String str = null;   
       try{

URL url = null;
        try {
            url = new URL("http://www.google.com");
        } catch (MalformedURLException ex) {
            Logger.getLogger(MyService.class.getName()).log(Level.SEVERE, null, ex);
        }

        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        while ((str = in.readLine()) != null) {
            // str is one line of text; readLine() strips the newline character(s)
        }
                //all is ok

        in.close();

     }       catch (IOException ex) {
        Logger.getLogger(MyService.class.getName()).log(Level.SEVERE, null, ex);
    }finally{ stopSelf();
     }

    //resultReceiver.send(100,null);

    return str;
}

}

別の質問: int だけでなく String を送信するにはどうすればよいresultReceiver.sendですか?

4

1 に答える 1

1

resultReceiver.sendでintだけでなく文字列を送信するにはどうすればよいですか?

作成Bundleして入力するだけStringです。

Bundle data = new Bundle();
data.putString("key", data);
resultReceiver.send(2, someData);


注:確かに、メソッドの最初のパラメーターは、メソッドのresultCodesend()想像します。onReceiveResult

于 2012-06-29T12:07:33.287 に答える