我已经在很长一段时间内一直在寻找关于我的问题的解决方案,但是Android文档并不是那么清晰,而且网络解决方案也不能完全运行.
我正在开发一个游戏,其中主要的Activity(游戏发生的地方)可以调用另一个简单的Activity而不是返回.它会像这样工作:
对于前两点,我尝试了这一点,以确保创建并调用了一个且只有一个主Activity:android:launchMode="singleTask"或者android:launchMode="singleTop"不幸的是,第一个问题适用于第一个问题而第二个适用于第二个问题,而不是两个问题!
我认为问题是:使用singleTop时,当第二个活动调用它时,主Activity实际上并不在堆栈的顶部(要清楚,我不明白应该是什么情况,我称之为活动是已经在堆栈的顶部!).相反,singleTask确保Activity在其堆栈中是唯一的,但是在用户单击Home按钮并返回到Application之后,其他任务被调用,我是对的吗?
无论如何,这是一个聪明的解决方案还是我应该在onStop/onPause中保存我的游戏状态然后在onResume中恢复?
对于第三点,我尝试添加android:noHistory="true"到每个Activity,然后当用户单击退出按钮时,我调用一个新的Activity,除了finish()onCreate上的方法之外什么都不做,调用这个Activity intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);并且它的launchMode是singleInstance,但它没有'工作,它只是总是在主Activity中返回.
我使用了一个二维数组的字符,应该由C中的多个函数编写和读取.
这是我的阵列:
static char array[3][6];
Run Code Online (Sandbox Code Playgroud)
让我们说我有一个函数'Function()'来修改这个数组.如果函数在main中定义没有问题(数组被正确写入然后读取),但如果我想将我的函数放在另一个文件中,那么数组是正确写入的,但是当我在main中返回时是神奇地空了!这是我的代码.
main.c中
#include "support.h"
int main(int argc, char *argv[])
{
Function();
unsigned i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 6; j++)
printf("[%c]", array[i][j]);
printf("\n");
}
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
support.h
static char array[3][6];
Run Code Online (Sandbox Code Playgroud)
support.c
void Function()
{
char hello[6];
hello[0] = 'H';
hello[1] = 'E';
hello[2] = 'L';
hello[3] = 'L';
hello[4] = 'O';
hello[5] = '\0';
strcpy(array[0], hello);
}
Run Code Online (Sandbox Code Playgroud)
没有编译错误也没有运行时错误.再一次,如果我尝试移动main.c中的所有内容都可以工作,如果我分成两个文件则不然(数组一旦从Function()返回就会正确,然后它被释放),怎么样有可能吗?