如果您的应用程序需要数据库并且它带有内置数据,那么运送该应用程序的最佳方式是什么?我是不是该:
预先创建SQLite数据库并将其包含在.apk?
在应用程序中包含SQL命令并让它创建数据库并在首次使用时插入数据?
我看到的缺点是:
可能的SQLite版本不匹配可能会导致问题,我目前不知道数据库应该去哪里以及如何访问它.
在设备上创建和填充数据库可能需要很长时间.
有什么建议?关于任何问题的文档的指针将不胜感激.
我的程序在后台线程中执行一些网络活动.在开始之前,它会弹出一个进度对话框.该对话框在处理程序上被关闭.这一切都很好,除非在对话框启动时屏幕方向发生变化(后台线程正在运行).此时,应用程序崩溃或死锁,或进入一个奇怪的阶段,在应用程序完全无法工作之前,直到所有线程都被杀死.
如何优雅地处理屏幕方向变化?
下面的示例代码大致匹配我的真实程序:
public class MyAct extends Activity implements Runnable {
public ProgressDialog mProgress;
// UI has a button that when pressed calls send
public void send() {
mProgress = ProgressDialog.show(this, "Please wait",
"Please wait",
true, true);
Thread thread = new Thread(this);
thread.start();
}
public void run() {
Thread.sleep(10000);
Message msg = new Message();
mHandler.sendMessage(msg);
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
mProgress.dismiss();
}
};
}
Run Code Online (Sandbox Code Playgroud)
堆:
E/WindowManager( 244): Activity MyAct has …Run Code Online (Sandbox Code Playgroud) 请考虑以下示例:
with open('a.txt') as f:
pass
# Is f supposed to be defined here?
Run Code Online (Sandbox Code Playgroud)
我已经阅读了with语句和PEP-343的语言文档(2.7),但据我所知,他们在这个问题上没有说什么.
在CPython 2.6.5 f中似乎确实在with-block之外定义,但我宁愿不依赖可能改变的实现细节.
我希望我的setup.py除了安装Python包之外还做一些自定义操作(比如安装init.d脚本,创建目录和文件等).我知道我可以自定义distutils/setuptools类来做我自己的操作.我遇到的问题是当我cd到包目录并执行"python setup.py install"时一切正常,但是当我执行"easy_install mypackage.tar.gz"时,我的自定义类似乎没有被执行.这是我的setup.py文件(在同一目录中创建一个空的myfoobar.py文件进行测试):
import setuptools
from setuptools.command import install as _install
class install(_install.install):
def initialize_options(self):
_install.install.initialize_options(self)
def finalize_options(self):
_install.install.finalize_options(self)
def run(self):
# Why is this never executed when tarball installed with easy_install?
# It does work with: python setup.py install
import pdb;pdb.set_trace()
_install.install.run(self)
setuptools.setup(
name = 'myfoobar',
version = '0.1',
platforms = ['any'],
description = 'Test package',
author = 'Someone',
py_modules = ['myfoobar'],
cmdclass = {'install': install},
)
Run Code Online (Sandbox Code Playgroud)
即使我从distutils导入"setup"和"install",也会发生同样的事情.任何想法如何让easy_install执行我的自定义类?
为了澄清,我不想使用任何额外的东西,比如Buildout或Paver.
Mac通常在HFS +文件系统上运行,该系统规范化路径.也就是说,如果您在其中保存带有重音é的文件(u'\xe9'例如),然后执行a,os.listdir您将看到文件名已转换为u'e\u0301'.这是Python unicodedata模块可以处理的正常unicode NFD规范化.不幸的是,HFS +与NFD并不完全一致,这意味着某些路径不会被标准化,例如u'\ufa1b',尽管它的NFD形式是福的,但不会改变福()u'\u798f'.
那么,如何在Python中进行规范化呢?我可以使用原生API,只要我可以用Python调用它们.
当您使用Eclipse插件和调试器开发Android应用程序并获得堆栈跟踪时,您将看不到任何SDK源代码.你需要采取哪些措施来解决这个问题?假设初学Java程序员.
为了澄清,我希望Eclipse在跳转到堆栈帧时自动向我显示正确的源文件和行.我假设我需要找到正确的SDK源代码,将它们放在我的本地系统上,然后告诉Eclipse如何查找和使用它们.问题是,我究竟是如何做这些步骤的.
我需要在屏幕上显示大量的EditText控件,每个控件只允许输入0-2位数.默认的EditText大小太宽,我无法在屏幕上显示足够的EditText控件,但我一直无法弄清楚如何使它们更窄.我已经尝试了以下属性
XML:
android:maxLength="2"
android:layout_width="20dip"
android:maxWidth="20px"
android:ems="2"
android:maxEms="2"
Run Code Online (Sandbox Code Playgroud)
所以问题是:如何使EditText小于默认值?
我以%H:%M字符串格式(例如"15:43")在sqlite中存储一些时间值,但是我希望以12小时格式将它们格式化为AM/PM指示符(例如"3:43")下午").这是可能的sqlite(如果是这样,如何),或者我需要在我的应用程序代码中执行此操作?
我有一个跨平台的应用程序,我们使用ant在不同的平台上构建不同的东西.现在出现了一个新的要求,如果在Snow Leopard或者后来的Leopard上进行构建,我需要采取不同的做法.
我查看了http://www.devdaily.com/blog/post/java/how-determine-operating-system-os-ant-build-script,其中介绍了如何区分Windows和Macintosh等,以及http ://www.jajakarta.org/ant/ant-1.6.1/docs/en/manual/api/org/apache/tools/ant/taskdefs/condition/Os.html显示了os的其他属性,例如${os.version}.
我还没想到的是如何比较它的os.version价值,如果它是10.6或更高的雪豹的东西.如果我可以snow_leopard在Snow Leopard上将变量设置为1,我想我可以将其余部分计算出来.
任何人都可以解释以下原因:
>>> from M2Crypto import DSA, BIO
>>> dsa = DSA.gen_params(1024)
..+........+++++++++++++++++++++++++++++++++++++++++++++++++++*
............+.+.+..+.........+.............+.....................+.
...+.............+...........+.........................................
+.........+................+..........+......+..+.+...+..........+..+..
..+...+......+....+.............+.................+.......+.........+..
....+......+.+..+..........+........+.+...+..+...............+.........
..+.....+........+..........+++++++++++++++++++++++++++++++++++++++++++
++++++++*
>>> mem = BIO.MemoryBuffer()
>>> dsa.save_key_bio(mem, cipher=None)
1
>>> dsa.save_pub_key_bio(mem)
0
>>> print mem.getvalue()
-----BEGIN DSA PRIVATE KEY-----
MIIBIgIBAAKBgQDPGRFSTqqx8vet5kaW5m99A83REotTcX9HOv+zrqMxQpaTlinS
MDz49I4psDPJ+bWH7vySEdOYO2JGUj6kYZdz/ZwyNjphWNjQkaUrmfaVLzS3PHpW
aMrPEweLesf/PT4KXm2HaDbaW/g2Ds5h+Zlq9LDKcN2vfvyeiTCmf1esyQIVAO9I
ippU4PIdvJVO9HQRkqrD2bxPAoGBAIwVgM7dgNVwihJva6qeeh7ypy3ESNB9k8nY
fOnES+SqZGQbkPrJIusRCJNKERiMATJXNRMfBeWD8htNRezbgtr0OpuYSBurAQjp
hKKVI3DHSv7XT49BQ3tdJww8lQfkOhHOfFTG6U1dJhWdggp0WN3EjYlt77agRsjR
4t5sD1f3
-----END DSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
-----END PUBLIC KEY-----
>>>
Run Code Online (Sandbox Code Playgroud)
很明显我错过了一些东西.M2Crypto不存在的文档没有帮助.
我不能使用定义的变量创建一个目录,我得到一个, WindowsError: [Error 183] Cannot create a file when that file already exists:
我试过这样的事情:
import os, ConfigParser
import Tkinter as tk
root = Tk()
exp_no = ""
config = ConfigParser.ConfigParser()
config.read("config.ini")
resultado = config.get("General", "lugar_exp")
en1 = tk.Entry(root, width = 30, background = 'white', textvariable = exp_no)
en1.pack()
os.mkdir(resultado+'/'+en1.get())
Run Code Online (Sandbox Code Playgroud) python ×6
android ×4
m2crypto ×2
aes ×1
android-xml ×1
ant ×1
cryptography ×1
directory ×1
easy-install ×1
eclipse ×1
hfs+ ×1
macos ×1
rsa ×1
setuptools ×1
sqlite ×1
unicode ×1
variables ×1