popen缓冲输出而系统没有.那是唯一的区别吗?
我知道popen和system都通过shell运行命令.然而,popen()和system()一样邪恶吗?
我面临着逐行读取/写入文件(在Gigs中)的挑战.
读取许多论坛条目和网站(包括一堆SO),mmap被认为是读/写文件的最快选项.但是,当我用readline和mmap技术实现我的代码时,mmap是两者中较慢的一个.这对于阅读和写作都是如此.我一直在测试大约600 MB的文件.
我的实现逐行解析,然后对行进行标记.我只会提供文件输入.
以下是getline实现:
void two(char* path) {
std::ios::sync_with_stdio(false);
ifstream pFile(path);
string mystring;
if (pFile.is_open()) {
while (getline(pFile,mystring)) {
// c style tokenizing
}
}
else perror("error opening file");
pFile.close();
}
Run Code Online (Sandbox Code Playgroud)
这是mmap:
void four(char* path) {
int fd;
char *map;
char *FILEPATH = path;
unsigned long FILESIZE;
// find file size
FILE* fp = fopen(FILEPATH, "r");
fseek(fp, 0, SEEK_END);
FILESIZE = ftell(fp);
fseek(fp, 0, SEEK_SET);
fclose(fp);
fd = open(FILEPATH, O_RDONLY);
map = (char *) mmap(0, …
Run Code Online (Sandbox Code Playgroud) 我正在尝试更改我的GridView
. 目前,项目在 xml 中按样式 (GridView_words_small) 排列:
numColumns: auto_fit
stetchMode: 'spacingWidth'
ColumnWidth: width of the items being added (resource).
Run Code Online (Sandbox Code Playgroud)
现在,通过设置更改,可以更改按钮大小。但是,当 IsetColumnWidth()
和时invalidate()
,不会显示任何项目(将该区域留空。)
有谁知道如何gridview
动态正确更改列宽?
我已经创建了 android_2.1 模拟器,当我运行任何应用程序时,几秒钟后控制台会产生这样的错误
[2011-09-23 21:53:43 - ddms]null
java.lang.NullPointerException
at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)
Run Code Online (Sandbox Code Playgroud)
是任何类型的错误并且可以解决此错误吗?
我有一个自定义类(触摸按钮)扩展TextView类.我无法手动调整按钮大小.我可以让按钮只适用于一种类型的布局或容器,但不能同时使用两种.在大多数情况下,Touchbutton在gridviews中,所以我改变大小的方法如下:
private void setLayout(buttonsize_t size) {
log("Setting Layout: "+buttonsize_t.getPxl(size));
final float scale = getContext().getResources().getDisplayMetrics().density;
int dim = (int) (buttonsize_t.getPxl(size) * scale + 0.5f);
AbsListView.LayoutParams params = (AbsListView.LayoutParams) getLayoutParams();
if (params != null) {
params.height = dim;
params.width = dim;
}
else {
params = new AbsListView.LayoutParams(dim,dim);
}
setLayoutParams(params);
}
Run Code Online (Sandbox Code Playgroud)
但是,当在LinearLayout中调整TouchButton的大小时(例如),我遇到了Logcat的崩溃:
09-01 19:18:35.630: ERROR/AndroidRuntime(20793): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
09-01 19:18:35.630: ERROR/AndroidRuntime(20793): at com.ians.aac3.TouchButton.setLayout(TouchButton.java:204)
Run Code Online (Sandbox Code Playgroud)
线204指的是参数的实例化.
我注意到两者GridView
并LinearLayout
分享了父母ViewGroup
,所以我尝试使用ViewGroup.LayoutParams
.但是,这将导致gridviews的相同行为(logcat引用同一行).
有谁知道我如何使这个工作适用于任何类型的布局或小部件?
更新:根据建议,我再次尝试使用View组:
import android.content.Context;
import …
Run Code Online (Sandbox Code Playgroud) 在我的示例应用程序中,我使用Canvas和GestureDetector绘制视图.对于OnGestureListener,除了onFling和onScroll之外,所有方法都在工作.
任何人都可以告诉我如何检测画布上的Fling和Scroll手势.
谢谢