我创建了一个由其他应用程序通过AIDL绑定的服务,并将其添加到清单中,如下所示:
<service android:name=".MyService">
<intent-filter>
<action android:name="org.example.android.myservicedemo.IService" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
其中IService是AIDL接口.
通过这种方式,Eclipse向我显示警告导出的服务不需要权限.如果我删除intent-filter,警告消失,但显然应用程序无法绑定到服务.
这个警告意味着什么?
该Main方法是C#控制台应用程序的入口点.因此,例如,如果我必须启动一些线程或服务,我将在该Main方法中执行.
我没有Main在WPF项目中看到该方法,那么WPF应用程序的入口点是什么?如果我必须启动一些线程或服务,应该在哪里编写启动它们的代码?
更新: 这个答案总结了可用的解决方案,但每个解决方案的优缺点是什么?
struct是一个值类型,所以如果我将一个struct分配给另一个struct,它的字段将被复制到第二个struct中.但是,如果结构的某些字段是引用类型会发生什么?
public struct MyIPEndPoint
{
public String IP;
public UInt16 Port;
public MyIPEndPoint(String ipAddress, UInt16 portNumber)
{
IP = ipAddress;
Port = portNumber;
}
public override string ToString()
{
return IP+":"+Port;
}
}
...
static int Main(string[] args)
{
MyIPEndPoint address1 = new MyIPEndPoint("127.0.0.1", 8080);
MyIPEndPoint address2 = address1;
address2.IP = "255.255.255.255";
address2.Port = 9090;
Console.WriteLine(address1);
Console.WriteLine(address2);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
127.0.0.1:8080
255.255.255.255:9090
Run Code Online (Sandbox Code Playgroud)
为什么IP(一个字符串,即参考类型)address1不会改变?如果我更换会发生同样的行为string与IPAddress代表IP内MyIPEndPoint虽然:IPAddress是一类(即引用类型),它不表现为引用类型.为什么?
实际上,如果我string使用一个新的简单类来包装代表IP 的那个MyIP,那么行为就会改变. …
当我调用对象的startListening方法时SpeechRecognizer,语音识别器开始收听语音.我想创建一个等待特定关键字语音的服务:当用户说出该关键字并且语音识别器检测到该关键字时,该服务就准备好接收用户语音命令.
为此,在SpeechRecognizer实例化之后,我应该调用它的startListening方法:我可以让语音识别器无限期地监听吗?
可以在该onActivityResult(int requestCode, int resultCode, Intent data)方法中读取语音识别的结果,如该示例中所示.这个方法在类中重写了相同的方法Activity:为什么对超类方法的调用不是第一个语句?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) {
// Fill the list view with the strings the recognizer thought it could have heard
// ...
}
super.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud) 我有一项活动通过调用启动的服务的情景startService方法:无论是Activity和Service是在同一个包.然后,服务根据其配置参数,可以启动ExternalActivity包含在不同包中的活动(让我们称之为):此活动通过以下方式绑定服务bindService; 一旦这个活动完成了它的任务,就会调用以下unbindService方法......
// method of ExternalActivity
@Override
public void onDestroy() {
super.onDestroy();
unbindService(...);
}
Run Code Online (Sandbox Code Playgroud)
结果,该服务也被销毁.是否有可能避免破坏服务?
我试图vector使用负索引索引a .所述vector::at()成员函数检查指定索引是否是向量的边界内,并且如果这种情况不会发生,一个out_of_range则抛出异常.
vector<float> array; // sample vector
array.push_back(0.123);
array.push_back(1.234);
array.push_back(2.345);
array.push_back(3.456);
array.push_back(4.567);
int index = -1;
float f = array.at(index);
cout << f << endl;
Run Code Online (Sandbox Code Playgroud)
vector::at()成员函数的签名要求指定的参数是vector<T>::size_type类型,并且此类型unsigned int用于向量,因此编译器应执行从int(index变量的类型)到的隐式转换unsigned int.由于index值是-1在上述例子中,隐式转换index是4294967295(即所述的最大值unsigned int型):此值被传递给vector::at()成员函数,其抛出out_of_range异常.
换句话说,没有引发这种异常,因为vector::at()成员函数看到的是,index小于零,而是由于隐式转换index比的当前大小更大vector.这是正确的解释吗?
我编写了该函数int compare_16bytes(__m128i lhs, __m128i rhs),以便使用SSE指令比较两个16字节数:该函数返回执行比较后相等的字节数.
现在我想使用上面的函数来比较任意长度的两个字节数组:长度可能不是16字节的倍数,所以我需要处理这个问题.我怎样才能完成下面这个功能的实现?我怎样才能改进下面的功能?
int fast_compare(const char* s, const char* t, int length)
{
int result = 0;
const char* sPtr = s;
const char* tPtr = t;
while(...)
{
const __m128i* lhs = (const __m128i*)sPtr;
const __m128i* rhs = (const __m128i*)tPtr;
// compare the next 16 bytes of s and t
result += compare_16bytes(*lhs,*rhs);
sPtr += 16;
tPtr += 16;
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 我应该计算__m128i寄存器的设置位数.特别是,我应该使用以下方法编写两个能够计算寄存器位数的函数.
是否有可以完全或部分执行上述操作的内在功能?