私は、デバイスがロックされ、アプリケーションが閉じられたときに呼び出されるべき独立した画面を作成しようとしているReact Nativeで作業しています。私のコードが続きAndroidのアクティビティ複数のインスタンス
:
UnlockScreenActivity.java
public class UnlockScreenActivity extends ReactActivity {
// public class UnlockScreenActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
setContentView(R.layout...); // the xml layout
final ReactContext reactContext = getReactInstanceManager().getCurrentReactContext();
Button openBtn = (Button) findViewById(R.id.accept_call_btn);
openBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
...
}
});
Button closeBtn = (Button) findViewById(R.id.reject_call_btn);
closeBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
...
finish();
}
});
}
private void sendEvent(ReactContext reactContext, String eventName, WritableMap params) {
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
}
}
のAndroidManifest.xmlは:
私は私の画面を呼び出す方法<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...
<application
android:name=".MainApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize">
...
</activity>
...
<!-- none of this worked -->
<!-- android:launchMode="singleInstance" -->
<!-- android:launchMode="singleTask" -->
<activity android:name=".UnlockScreenActivity" android:noHistory="true" />
...
</application>
</manifest>
:
私は、単一のインスタンスでそれを得るにはどうすればよい:画面が開いたら
Intent i = new Intent(context, UnlockScreenActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // still the same
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // still the same
i.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); // still the same
startActivity(i);
は、私はアプリは2つのインスタンスを持っていることを参照してください?
UPDATE
これは私が管理し、これまでのところ、それはAndroidManifest.xmlを
// ReactApplicationContext context
Intent i = new Intent(context, UnlockScreenActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
を働いている方法です:
<activity
android:name=".UnlockScreenActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:persistableMode="persistNever"
android:autoRemoveFromRecents="true" />
これは、あなたがこのことについて何を知っていますか、あなたは –
@vikaskumar、W0rmH0le @まだ股関節同じ – Pablo
をFLAG_ACTIVITY_SINGLE_TOP助けるかもしれませんか? – Pablo