Java Android AIDL启动进程不工作
我有一个活动,我在后台调用服务,我对AIDL很陌生 我的代码如下: 关于活动的信息Java Android AIDL启动进程不工作,java,android,web-services,aidl,Java,Android,Web Services,Aidl,我有一个活动,我在后台调用服务,我对AIDL很陌生 我的代码如下: 关于活动的信息 //declaration private Intent mIntentInvenueService; private IInvenueService mIInvenueService; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mIntentInvenueSer
//declaration
private Intent mIntentInvenueService;
private IInvenueService mIInvenueService;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mIntentInvenueService = new Intent(this, InvenueService.class);
startService(mIntentInvenueService);
}
private final ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
mIInvenueService = IInvenueService.Stub.asInterface(service);
try {
mIInvenueService.registerCallback(mCallback);
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
mIInvenueService = null;
try {
mIInvenueService.unregisterCallback(mCallback);
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
private final IInvenueServiceCallback.Stub mCallback = new IInvenueServiceCallback.Stub() {
@Override
public void onReceiveResponse() throws RemoteException {
runOnUiThread(new Runnable() {
public void run() {
if (flagChanged){
}
else
{
cAdapter.notifyDataSetChanged();
}
}
});
}
};
public void onResume() {
super.onResume();
bindService(mIntentInvenueService, mServiceConnection, BIND_AUTO_CREATE);
}
@Override
public void onDestroy() {
super.onDestroy();
unbindService(mServiceConnection);
unregisterReceiver(mBroadcastReceiver);
}
关于我的服务:
private final RemoteCallbackList<IInvenueServiceCallback> mCallbacks = new RemoteCallbackList<IInvenueServiceCallback>();
private boolean isUpdated = false;
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
private final IInvenueService.Stub mBinder = new IInvenueService.Stub() {
@Override
public void startProcess() throws RemoteException {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
Toast.makeText(......).show()// Toast Here
}
}, 60000, 60000);
}
@Override
public void unregisterCallback(IInvenueServiceCallback callback)
throws RemoteException {
mCallbacks.unregister(callback);
}
@Override
public void registerCallback(IInvenueServiceCallback callback)
throws RemoteException {
mCallbacks.register(callback);
}
};
interface IInvenueService {
void startProcess();
void registerCallback(IInvenueServiceCallback callback);
void unregisterCallback(IInvenueServiceCallback callback);
}
我的问题是为什么祝酒词没有出现?我是否遗漏了启动流程不起作用的内容
有什么帮助吗?您应该显示来自UIThread的祝酒词,使用
TimerTask
将使其在单独的线程上运行
尝试将带有
Toast
的runnable发布到处理程序。实际上,我必须为此调用Asynctask,主要问题是没有调用StartProcess,因为计时器从未调用。在活动中调用StartProcess的位置在哪里?先生,我该怎么做?这就是我缺少的吗?明白了我忘记调用方法了