В отличие от других языков, имеющих переменную и значение, у Python есть имя и объект.
Этот оператор:
a = [1,2,3]
означает присвоение списку (объекту) имени a
, и это:
b = a
просто дает тому же объекту a
новое имя b
, поэтому всякий раз, когда вы что-то делаете с a
, объект изменяется, и поэтому b
изменяется .
Единственный способ сделать действительно копию a для создания нового объекта, как и другие ответы, уже сказал.
Вы можете увидеть больше об этом здесь .
Конечно! Нет причин, по которым вы не можете иметь приложение только с услугой. ... и нет необходимости входить в AIDL, если вы этого не хотите.
Проблема в том, как заставить приложение запускаться. Когда вы создаете приложение с активностью, вы добавляете в манифест фильтр Intent, который запускает активность с Launcher. Если нет никакой активности, вам придется найти другой способ ее запуска.
Это легко сделать. Просто запустите намерение от одной из ваших других программ, например:
startService(new Intent("my.service.intent"));
... где служба зарегистрирована ваш манифест, например:
<service android:name=".SomeService" >
<intent-filter>
<action android:name="my.service.intent"/>
</intent-filter>
Вы могли бы используйте это намерение передать Parcelable параметры в службу, и служба может ответить, передавая намерения обратно.
Конечно, startService и broadcastIntent немного неуклюжи, если вам действительно нужен сложный API между приложениями и вашим сервисом. Если вам нужно что-то более богатое, вы захотите посмотреть в AIDL и связанную службу.
Отредактировано для добавления Intent Filter
Да, я думаю, вы ищете AIDL. Посмотрите на эту тему?
https://groups.google.com/forum/#!topic/android-developers/LuWPZjPZ0sk