0

這裏的情景,如何從服務獲取數據到涉及回調的活動?

  • 我想從服務中獲取數據到活動

  • 每當該服務的服務器上,下面的函數(回調)獲取新的數據會導致自動調用

public void publishArrived(blah, blah) { //some operation here }

  • 如何從上述函數獲取數據返回到我的活動? (我想我應該使用「信使」在這裏,但我不能夠把握的概念)

背景:在我的活動我執行登錄操作,其成功與否取決於上述結果到達在publishArrived中。

在此先感謝。

+0

你可以使用***待定意圖,事件總線,Messenger或廣播意圖***擺脫的服務回報活動,然後對數據進行it.Check一些操作出我的[博客文章](https://androidlearnersite.wordpress.com/2018/02/2 3 /通信服務/),涵蓋所有這些方法。 – 2018-02-24 15:29:57

回答

1

假設您需要同時啓動活動和服務(而不是在您接收服務中的數據後啓動活動),您可以在活動中註冊BroadcastReceiver,然後從服務中發送廣播消息一旦你有數據。

註冊您的活動廣播接收機將與此類似的代碼,但你可以定義自己的自定義消息:
https://stackoverflow.com/a/2959290/483708

從服務發送自定義播放你會使用這個(從http://www.vogella.de/articles/AndroidServices/article.html解除):

Intent intent = new Intent(); 
intent.setAction("de.vogella.android.mybroadcast"); 
sendBroadcast(intent); 
+0

謝謝。在我的活動中,如何等待直到從服務器獲得廣播?我應該使用線程嗎? – kgdinesh 2012-03-25 20:22:40

+1

你的意思是你如何等待你的活動中的服務廣播?您可以在等待從服務接收廣播的同時在您的活動中顯示ProgressDialog。看到這個:http://thedevelopersinfo.wordpress.com/2009/10/16/showing-progressdialog-in-android-activity/ – Theo 2012-03-26 17:32:05

0

下面是解決方案。之前你onCreate()方法,但該類像這裏面 聲明String -

public static final String pass="com.your.application._something"; 

在你publishArrived方法,你可以做到這一點 -

String s="Pass this String";//If you want to pass an string 
int id=10;//If you want to pass an integer 
Intent i=new Intent(currentactivity.this,NewActivity.class); 
i.putExtra(pass, id);//If you want to pass the string use i.putExtra(pass, s); 
startActivity(i); 

現在要趕數據,本次活動提供。 因此,在新的活動,簡單的提取值,如圖 -

//this is for getting integer. 
int a=getIntent().getExtras().getInt(CurrentActivity.pass); 
//this is for getting String 
String s=getIntent().getExtras(CurrentActivity.pass); 

注1:實際上總是像它可以很容易PE解析爲整數字符串應該傳遞。

注2:在相應位置給出您的CurrentActivity和NewActivity名稱。

希望這會有所幫助。

在你的情況假設登錄爲「ABC」,密碼爲「焊接工藝評定」 那麼你可以在NewActivity通過這爲 String s=login+"*"+password; 這將導致ABC * PQR現在

簡單解析字符串直到你得到'*'。得到它的索引indexOf('*')。該索引之前的值是登錄名,之後的值將是密碼。

+0

你似乎正在說話活動之間傳遞消息。我需要一個服務。 – kgdinesh 2012-03-25 20:24:55

+0

Ohh right..Sorry ..上面的回答對你來說是完美的。 :D – Exorcist 2012-03-26 09:38:34