我有以下字符串:
{"_id":"scheme_version","_rev":"4-cad1842a7646b4497066e09c3788e724","scheme_version":1234}
Run Code Online (Sandbox Code Playgroud)
我需要获得"scheme version"的值,在这个例子中是1234.
我试过了
grep -Eo "\"scheme_version\":(\w*)"
Run Code Online (Sandbox Code Playgroud)
然而它又回来了
"scheme_version":1234
Run Code Online (Sandbox Code Playgroud)
我该怎么做?我知道我可以添加sed调用,但我更愿意用单个grep来实现.
我的应用程序在后台运行,在某些时候会显示活动以故意中断用户的流程.我的活动启动了一项新任务,该任务在前台时出现在"近期任务"列表中.有什么方法可以预防吗?设置android:excludeFromRecents不起作用 - 仅在暂停后,"近期任务"中不再显示活动.
清单看起来像:
<activity
android:name="com.example.recenttasks.MainActivity"
android:excludeFromRecents="true">
</activity>
Run Code Online (Sandbox Code Playgroud)
和活动以这种方式开始:
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序我将RGB颜色值传递给服务器.我的应用程序使用UIColor预定义值,如[UIColor grayColor],[UIColor redColor].我知道我可以使用以下代码:
const CGFloat *c = CGColorGetComponents(color.CGColor)
Run Code Online (Sandbox Code Playgroud)
但是,仅适用于RBG色彩空间中的颜色,[UIColor grayColor]不是.
有没有办法获得非RBG颜色的RGB值?
谢谢!
我有一个存储应用程序上下文信息的应用程序 应用程序上下文信息在MyApp类中的活动之间共享,该类扩展了Application类.
我正在为我的活动编写单元测试,我想检查当用户单击活动中的按钮时,应用程序状态将发生变化.像这样的东西:
@Override
public void onClick(View pView) {
((MyApp)getApplicationContext()).setNewState();
}
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何模拟该应用程序上下文.我使用ActivityUnitTestCase作为测试用例库.当我调用setApplication时,它会更改Activity类的mApplication成员的值,但不会更改应用程序上下文的值.我也尝试过setActivityContext,但它似乎不对(它不是应用程序上下文而是活动上下文)并且它在startActivity中触发断言).
所以问题是 - 如何模拟getApplicationContext()?
我需要创建包含ListView和消息的对话框,但是根据http://code.google.com/p/android/issues/detail?id=10948,使用标准AlertDialog是不可能的.所以我决定使用text和listview创建自定义视图,并将其附加到对话框.
但是,我的列表视图是空的.这是java代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Hello, title!");
LayoutInflater factory = LayoutInflater.from(this);
View content = factory.inflate(R.layout.dialog, null);
ListView lv = (ListView) content.findViewById(R.id.list);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_single_choice, ITEMS));
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
builder.setView(content).setPositiveButton("OK", this).setNegativeButton("Cancel", this);
AlertDialog alert = builder.create();
alert.show();
Run Code Online (Sandbox Code Playgroud)
我也有:
final String[] ITEMS = new String[] { "a", "b", "c" };
Run Code Online (Sandbox Code Playgroud)
这是对话框布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello, text!" />
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/list"
></ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
结果如下: 
任何帮助是极大的赞赏.谢谢!
我使用django-celery并且有这样的任务:
class TestTask(Task):
name = "enabler.test_task"
def run(self, **kw):
debug_log("begin test task")
time.sleep(5)
debug_log("end test task")
def on_success(self, retval, task_id, args, kwargs):
debug_log("on success")
def on_failure(self, retval, task_id, args, kwargs):
debug_log("on failure")
Run Code Online (Sandbox Code Playgroud)
我使用django shell来运行任务:
python manage.py shell
r = tasks.TestTask().delay()
Run Code Online (Sandbox Code Playgroud)
从芹菜日志我看到任务执行:
[2012-01-16 08:13:29,362: INFO/MainProcess] Got task from broker: enabler.test_task[e2360811-d003-45bc-bbf8-c6fd5692c32c]
[2012-01-16 08:13:29,390: DEBUG/PoolWorker-3] begin test task
[2012-01-16 08:13:34,389: DEBUG/PoolWorker-3] end test task
[2012-01-16 08:13:34,390: DEBUG/PoolWorker-3] on success
[2012-01-16 08:13:34,390: INFO/MainProcess] Task enabler.test_task[e2360811-d003-45bc-bbf8-c6fd5692c32c] succeeded in 5.00004410744s: None
Run Code Online (Sandbox Code Playgroud)
然而,当我从地狱检查任务状态时,我总是得到PENDING:
>>> r = tasks.TestTask().delay() …Run Code Online (Sandbox Code Playgroud) 我看到一些原因不明的Proguard行为.
AFAIK proguard不关注android清单.另外,在我的proguard.cfg中,我没有提及BroadcastReceiver相关的类.所以我认为那些应该被删除.
但是我在bin/proguard.txt中看到了一些奇怪的东西:
# view AndroidManifest.xml #generated:784
-keep class com.fiksu.asotracking.InstallTracking { <init>(...); }
Run Code Online (Sandbox Code Playgroud)
并且该类(BroadcastReceiver的后代)不会被剥离.理性并没有对我说任何有意义的事:
[proguard] com.fiksu.asotracking.InstallTracking
[proguard] is kept by a directive in the configuration.
Run Code Online (Sandbox Code Playgroud)
如果清单中没有提到类,它将被剥离.
很高兴知道为什么.
与此有关的问题
我有一个字符串
a\;b\\;c;d
Run Code Online (Sandbox Code Playgroud)
在Java中看起来像
String s = "a\\;b\\\\;c;d"
Run Code Online (Sandbox Code Playgroud)
我需要用分号按照以下规则拆分它:
如果分号前面有反斜杠,则不应将其视为分隔符(在a和b之间).
如果反斜杠本身被转义,因此不会以分号方式转义,那么分号应该是分隔符(在b和c之间).
因此,如果在它之前存在零或偶数个反斜杠,则应将分号视为分隔符.
例如上面,我想得到以下字符串(java编译器的双反斜杠):
a\;b\\
c
d
Run Code Online (Sandbox Code Playgroud) 我完全可以使用以下代码逐个添加联系人:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());
ops.add(ContentProviderOperation
.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE,
CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.GIVEN_NAME, "Hello")
.withValue(StructuredName.FAMILY_NAME, "World").build());
try {
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试逐个添加大约500个联系人时 - 它需要几分钟,这对我的应用来说太长了.是否有更快的方式添加多个联系人?
一位同事通过clang静态分析仪发现了一个奇怪的警告(实际上来自clang-check).
这段代码:
#include <regex>
int main() {
std::regex_match("jee", std::regex("lol"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
产生分析仪警告:
/usr/local/clang+llvm-3.9.0-x86_64-apple-darwin/bin/../include/c++/v1/regex:5724:17:
warning: Called C++ object pointer is null
s.__node_->__exec_split(true, s);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 warning generated.
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
android ×5
java ×4
regex ×3
backslash ×1
bash ×1
c++ ×1
celery ×1
cgcolorspace ×1
clang ×1
contacts ×1
dialog ×1
escaping ×1
grep ×1
iphone ×1
junit ×1
linux ×1
listview ×1
llvm-clang ×1
objective-c ×1
optimization ×1
proguard ×1
python ×1
uicolor ×1
unit-testing ×1