這裏的情景,如何從服務獲取數據到涉及回調的活動?
我想從服務中獲取數據到活動
每當該服務的服務器上,下面的函數(回調)獲取新的數據會導致自動調用
public void publishArrived(blah, blah) { //some operation here }
- 如何從上述函數獲取數據返回到我的活動? (我想我應該使用「信使」在這裏,但我不能夠把握的概念)
背景:在我的活動我執行登錄操作,其成功與否取決於上述結果到達在publishArrived中。
在此先感謝。
這裏的情景,如何從服務獲取數據到涉及回調的活動?
我想從服務中獲取數據到活動
每當該服務的服務器上,下面的函數(回調)獲取新的數據會導致自動調用
public void publishArrived(blah, blah) { //some operation here }
背景:在我的活動我執行登錄操作,其成功與否取決於上述結果到達在publishArrived中。
在此先感謝。
假設您需要同時啓動活動和服務(而不是在您接收服務中的數據後啓動活動),您可以在活動中註冊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);
下面是解決方案。之前你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('*')
。該索引之前的值是登錄名,之後的值將是密碼。
你可以使用***待定意圖,事件總線,Messenger或廣播意圖***擺脫的服務回報活動,然後對數據進行it.Check一些操作出我的[博客文章](https://androidlearnersite.wordpress.com/2018/02/2 3 /通信服務/),涵蓋所有這些方法。 – 2018-02-24 15:29:57