我有两个活动,第一个活动是由Launcher启动的,第二个活动是由第一个活动启动的.当我杀的过程中从第一胡亚蓉内,过程就会被杀死.但是当我从第二个活动中杀死它时,系统会立即启动一个新进程和第一个活动.(进程的PID发生了变化.)我怎样才能干净利落?
我尝试了3种不同的方法来杀死进程:System.exit(0),android.os.Process.killProcess(pid),以及非编程方式来自Eclipse的Devices面板.
以下是我经历过的两个世界上最简单的活动.它们都是各自文件中的外部类.
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button)findViewById(R.id.button)).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(FirstActivity.this,
SecondActivity.class));
}});
}
}
public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_2);
((Button)findViewById(R.id.button)).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
// Method 1
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
// Method 2
System.exit(0);
}});
}
}
Run Code Online (Sandbox Code Playgroud)
(我知道人们说永远不应该提供一个用户界面退出程序.但这是出于安全原因.用户必须有办法退出程序并关闭文件,这样他的信息就不会泄露.)
我想实现在安装应用程序后,Launcher中出现两个图标的目标.单击其中任何一个将启动相应的活动.使用底部的XML和JAVA代码,除了一个案例外,一切似乎都运行良好:
BUG:
步骤1.单击图标1开始活动1
步骤2.单击主页图标以切换到启动器
步骤3.从启动器中,单击图标2
预期结果:活动2开始.
实际结果:活动1恢复.
请注意,在步骤2中,如果单击" 返回"按钮而不是" 主页"按钮以返回到启动器,则步骤3将成功.但如果我使用Home按钮,则会发生错误.有人可以告诉我,我搞砸了什么?非常感谢!
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity
android:name=".TestActivity1"
android:label="Test 1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".TestActivity2"
android:label="Test 2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
// The first activity
public class TestActivity1 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
// The second activity, it uses a different content view
public class TestActivity2 extends Activity { …Run Code Online (Sandbox Code Playgroud) 我从Eclipse/Android项目(在Windows下)导出了build.xml文件.然后我使用命令"ant release"来尝试编译项目.但它总是显示错误:
BUILD FAILED
Target "release" does not exist in the project "xxxx".
Run Code Online (Sandbox Code Playgroud)
所以问题是:是否可以使用Eclipse创建的build.xml文件?或者,我该如何解决这个问题?
谢谢.
好吧,请不要问我原因,但我需要启动同步和阻止活动,以便程序流程在完成之前不会继续.我知道如何进行同步对话,但我该如何进行同步活动?
以下是我尝试但失败的两种方法:
// In the 1st activity, start the 2nd activity in the usual way
startActivity(intent);
Looper.loop(); // but pause the program here
// Program continuse running afer Looper.loop() returns
....
// Then, in the second activity's onBackPressed method:
public void onBackPressed() {
// I was hoping the following quit() will terminate the loop() call in
// the first activity. But it caused an exception "Main thread not allowed
// to quit." Understandable.
new Hanlder().getLooper().quit();
}
Run Code Online (Sandbox Code Playgroud)
我还试图用另一个线程来实现这个目的:
// In the …Run Code Online (Sandbox Code Playgroud) 首先,感谢大家,在进入Java/Android/Eclipse开发生活39天后,我几乎可以得到所有问题的答案.但现在我似乎陷入了一个非常意想不到的问题!
我需要将日期格式化为仅年+月和月+日格式.这些不是标准格式,因此我需要构建自己的格式模式并使用DateFormat.format()来获取字符串.我知道我可以使用DateFormat.getDateFormatOrder()来确定年,月,日的顺序.但我还需要知道日期分隔符,例如"/"," - "或".".这是我卡住的地方,我找不到办法去做!
从Eclipse调试器中,我可以看到DateFormat对象中有一个"模式"字段,但它没有公开.SimpleDateFormat.getDateFormatSymbols()方法的名称听起来像我想要的,但事实并非如此.所以....
请帮忙,谢谢.
我刚刚发现Android可以正确读取使用Windows ANSI(或所谓的多字节编码)编码的文件,并将其转换为Java Unicode字符串.但是在读取Unicode文件时失败了.似乎Android正在以逐字节的方式读取它.文件中的Unicode字符串"ABC"将被读入长度为6的Java字符串,字符为0x41,0x00,0x42,0x00,0x43,0x00.
BufferedReader in = new BufferedReader(new FileReader(pathname));
String str = in.readLine();
Run Code Online (Sandbox Code Playgroud)
请问有没有办法在Android上正确读取Windows Unicode文件?谢谢.
将帖子
实验:我在两个Windows文本文件中保存了两个汉字"难哪":
ANSI.txt -- C3 F8 AD FE
UNICODE.txt -- FF FE E3 96 EA 54
Run Code Online (Sandbox Code Playgroud)
然后我将这些文件放到Emulator的SD卡中,我使用以下程序读取它们:(注意,模拟器的语言环境已经设置为zh_TW).
BufferedReader in = new BufferedReader(new FileReader("/sdcard/ANSI.txt"));
String szLine = in.readLine();
int n = szLine.length(), j, i;
in.close();
for (i = 0; i < n; i++)
j = szLine.charAt(i);
Run Code Online (Sandbox Code Playgroud)
这是我在模拟器上看到的:
ANSI.txt -- FFFD FFFD FFFD
UNICODE.txt -- FFFD FFFD FFFD FFFD 0084
Run Code Online (Sandbox Code Playgroud)
显然Android(或Java)无法正确解码中文字符.那么,我该怎么做?先感谢您.