2017-12-05 14 views
-3

私にこれを案内してください。すべてのあなたの助けを感謝します。文字列の値をバックグラウンドサービスに渡す

私のバックグラウンドサービスがABC

乾杯です// -------------------文字列displayingText = "ABC"; -------- ---------

そして、私は2つの文字列を持っている、ABCとDEFは、私は、このサービスへの主な活動から値displayingTextを渡すにはどうすればよい

  1. mainactivity.javaで宣言されました。
  2. トーストABCが終了した後で、どのようにしてDEFにdisplayTextを変更しますか?

MyService.Java

public class MyService extends Service { 
public static final long INTERVAL=3000;//variable to execute services every 5 second 
private Handler mHandler=new Handler(); // run on another Thread to avoid crash 
private Timer mTimer=null; // timer handling 

//意図いけない仕事を得ます。どこに、どのように置くべきですか?

Intent myIntent = getIntent(); 
    if (myIntent !=null && myIntent.getExtras()!=null) 
String value = myIntent.getExtras().getString(PassToService); 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    throw new UnsupportedOperationException("unsupported Operation"); 
} 
@Override 
public void onCreate() { 


    // cancel if service is already existed 
    if(mTimer!=null) 
     mTimer.cancel(); 
    else 
     mTimer=new Timer(); // recreate new timer 
    mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(),0,INTERVAL);// schedule task 

} 


    @Override 
public void onTaskRemoved(Intent rootIntent) { 
    stopSelf();///its will stop service 
    super.onTaskRemoved(rootIntent); 
} 
@Override 
public void onDestroy() { 
    Toast.makeText(this, "In Destroy", Toast.LENGTH_SHORT).show();//display toast when method called 
    mTimer.cancel();//cancel the timer 
    super.onDestroy(); 

} 

//inner class of TimeDisplayTimerTask 
private class TimeDisplayTimerTask extends TimerTask { 
    @Override 
    public void run() { 

     // run on another thread 
     mHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       // display toast at every 10 second 
       //String displayingText = "ABC"; 
       String displayingText = myIntent.getStringExtra("PassToService"); 
       final Toast Notify = Toast.makeText(getApplicationContext(), displayingText, Toast.LENGTH_SHORT); 
       Notify.setGravity(Gravity.CENTER, 0, 0); 
       Notify.show(); 

       Handler cancelToast = new Handler(); 
       cancelToast.postDelayed(new Runnable() { 
        @Override 
        public void run() { 
         Notify.cancel(); 
        } 
       }, 1000); 

      } 
     }); 
    } 
} 

}

+1

[AndroidでAsyncTaskのトーストを表示する方法](https://stackoverflow.com/questions/16830255/how-to-display-toast-in-asynctask-in-android) –

+0

変数は次のとおりです。ファイルから読み取られ、asynctaskを使用しないでください。 – Anthony

答えて

0

あなたは

STARTSERVICEをservice-する活動から値を渡すことによってそれを行うことができます(新しいテント(YourActivity.Service.class).putExtra( "キー"、 "値") );

+0

サービス内で実際にgetIntent()メソッドを使用できますか? 私は https://stackoverflow.com/questions/3293243/pass-data-from-activity-to-service-using-an-intent を試してみたが、サービス 内intent.getIntExtra didntのは – Anthony

+0

@Override を働きますpublic int onStartCommand(Intent intent、int flags、int startId){ if(intent!= null && intent.hasExtra( "key")){ 文字列i = intent.getStringExtra( "key"、 ""); } お試しください –

+0

アップロードしたファイルからgetstringextraをどこに置くことができますか? – Anthony