我有什麼:的最佳方式
我使用AIDL上一個進程中運行庫。 我有一個應用程序使用這個庫,並在消息傳遞活動,我連接服務發送消息,我有一個廣播接收器來管理傳入的消息。
問題?
如果這個庫將被兩個應用程序在同一個設備上使用,那麼廣播操作將會是相同的,並且當我發送廣播時我會遇到問題。
什麼是我的疑問?
什麼是「聽」,我收到我的圖書館,並將其發送到應用程序的新收到的郵件的最佳途徑。 也許是回調?還是有更好的解決辦法?
更多信息
該庫提供了一些方法來啓動一個會話,和其他方法發送不同類型的消息(圖片,文字,地點,等...),我收到一個回調另一個使用C和C++的庫,當新消息傳入時。
如果您需要了解更多信息隨時問。
我的代碼:
IRemote.aidl
interface IRemote
{
int sendTextMessage(String to, String message);
}
WrapperLibrary.java
public class MyLibrary extends Service {
// Current context, used to sendbroadcast() from @Callbacks
private Context mContext = this;
private static MyLibrary instance = new MyLibrary();
//Executor to start a new thread from the service.
final ExecutorService service;
@Override
public IBinder onBind(Intent arg0) {
//Return the interface.
return mBinder;
}
/** Return the current instance */
public static WrapperLibrary getInstance() {
return instance;
}
private final IRemote.Stub mBinder = new IRemote.Stub() {
@Override
public int sendTextMessage(String to, String message)
throws RemoteException {
Log.d(TAG, "Send Text Message. ");
int i = -1;
Future<Integer> task;
task = service.submit(new Callable<Integer>() {
public Integer call() {
return tu.tu_message_send_text(to, message);
}
});
try {
i = task.get();
} catch (Exception e) {
Log.e(TAG, "Send Text Message: EXCEPTION *** " + e.getMessage());
}
Log.d(TAG, "Send Text Message: Status Code: " + i);
return 0;
}
}
Callbacks.java
public class Callbacks extends JNICallback {
private Context mContext;
public Callbacks(Context context) {
this.mContext = context;
}
public void on_incoming_text_message(final String from, final String message) {
Log.d(TAG, " Incoming TEXT message from:" + from + " with message: " + message);
Intent i = new Intent(BroadcastActions.INCOMING_TEXT_MESSAGE);
i.putExtra("from", from);
i.putExtra("message", message);
mContext.sendBroadcast(i);
}
}
MainActivity.java Ø n這個活動我有一個廣播接收器,我可以用一個新的消息
public class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extra = intent.getExtras();
String incomingMessage = "";
if(extra != null) {
incomingMessage = extra.getString("message");
addNewMessage(new Message(incomingMessage, false));
}
Toast.makeText(MessagingActivity.this, "Incoming Message", Toast.LENGTH_LONG).show();
}
};
你跟廣播預見哪些問題? –
用於不同的應用程序相同的庫:同一個廣播動作名稱,不同的應用程序庫:我不知道到底是什麼事情發生。無論如何,你認爲這是一個好方法嗎? – Pipeline
接收器背後有什麼問題..接收器是最好的選擇。所有自由和項目都是由你開發的嗎? –